由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Military版 - 请教将军们大量并发程序读写文件的io问题
相关主题
最适合塔利班的武器系列之二_ 国产QW(前卫)-3单兵防空导弹高铁人为破坏太容易了吧。
武广高铁降速运行了第十二回 三子香江宣铁诏 文侯晋省任庸官
借宝地谈谈刘志军被免职一事zz大公国际: 美国经济恶化 主权信用降至BBB+
加藤嘉一: 中国急需更加敬业,更加负责的铁道部长紧急求助!about identity theft (转载)
最适合塔利班的武器系列之二——国产前卫-3单兵便携式防空导弹 (转载)我驻日大使要求日方停止对中国海监船干扰
最适合塔利班的武器系列之二——国产前卫-3单兵便携式防空导弹 (转载)我记得有这样一个同窗。
少年王立军:从小就显露出“彪”性(组图) (转载)老大爷在水版征婚并发包子
市长工资2440元全国人民都笑了有时候是觉得中文表达能力需要普及滴提高一下
相关话题的讨论汇总
话题: 文件话题: br话题: io话题: 内存话题: 读取
进入Military版参与讨论
1 (共1页)
G****o
发帖数: 167
1
本青半路出家搞计算,不是很懂算法。
我现在有一个非并行程序,利用10号设备读取某大文件10.txt,同时用11号设备写文件
x1/11.txt。
现在想同时跑10000个程序。这时就会出现io瓶颈问题。
将军们有无好的建议?谢谢!
G****o
发帖数: 167
2
关于读文件的话,我想的方案是不用设备号打开这个文件,而是先把文件写入内存,然
后程序直接读取根据内存地址读。
G****o
发帖数: 167
3
这里没有码农吗?之前看各位将军刷题很厉害
g***n
发帖数: 14250
4
你如果内存够用当然是放内存里再一遍写回文件,io 负担最轻。当然如果你每次批量
写几 MB 也不会怎么样。琐碎的小数据量写入效率最差去。
y********4
发帖数: 1116
5
mmap
c*********9
发帖数: 229
6
想起当年写汇编的时候,为了速度,把一个字节分8个比特用,
现在的程序员都没有学过计算机结构,没有用过汇编,这是
幸福,还是堕落.....

【在 G****o 的大作中提到】
: 关于读文件的话,我想的方案是不用设备号打开这个文件,而是先把文件写入内存,然
: 后程序直接读取根据内存地址读。

G****o
发帖数: 167
7
谢谢。
我的10.txt实际是某个格式的binary文件,需要一次性读完,大小是大概2.5GB。1万个
同时提交的jobs都同时读取这个,然后经过一系列计算,写到每个job对应的文件夹下
。实际内存大小是120GB。
所以,其实我每次可能只能同时跑20个。。。同时跑1万个肯定挂掉,我之前吹牛了。
。。,虽然我最后需要跑100万个。


: 你如果内存够用当然是放内存里再一遍写回文件,io 负担最轻。当然如果你每
次批量

: 写几 MB 也不会怎么样。琐碎的小数据量写入效率最差去。



【在 g***n 的大作中提到】
: 你如果内存够用当然是放内存里再一遍写回文件,io 负担最轻。当然如果你每次批量
: 写几 MB 也不会怎么样。琐碎的小数据量写入效率最差去。

g***n
发帖数: 14250
8
如果文件是只读的数据,那就是楼上说的 memory map,
去查哪个系统库函数是干这事的,内存里放一份,所有job 都能读到
G****o
发帖数: 167
9
本青还是学过汇编的,都是现在不缺一个GB的内存


: 想起当年写汇编的时候,为了速度,把一个字节分8个比特用,

: 现在的程序员都没有学过计算机结构,没有用过汇编,这是

: 幸福,还是堕落.....



【在 c*********9 的大作中提到】
: 想起当年写汇编的时候,为了速度,把一个字节分8个比特用,
: 现在的程序员都没有学过计算机结构,没有用过汇编,这是
: 幸福,还是堕落.....

G****o
发帖数: 167
10
好的,谢谢
我去研究下


: 如果文件是只读的数据,那就是楼上说的 memory map,

: 去查哪个系统库函数是干这事的,内存里放一份,所有job 都能读到



【在 g***n 的大作中提到】
: 如果文件是只读的数据,那就是楼上说的 memory map,
: 去查哪个系统库函数是干这事的,内存里放一份,所有job 都能读到

相关主题
少年王立军:从小就显露出“彪”性(组图) (转载)第十二回 三子香江宣铁诏 文侯晋省任庸官
市长工资2440元全国人民都笑了大公国际: 美国经济恶化 主权信用降至BBB+
高铁人为破坏太容易了吧。紧急求助!about identity theft (转载)
进入Military版参与讨论
c*********9
发帖数: 229
11
you still dont get it....

【在 G****o 的大作中提到】
: 本青还是学过汇编的,都是现在不缺一个GB的内存
:
:
: 想起当年写汇编的时候,为了速度,把一个字节分8个比特用,
:
: 现在的程序员都没有学过计算机结构,没有用过汇编,这是
:
: 幸福,还是堕落.....
:

B********u
发帖数: 1
12
redis?
G****o
发帖数: 167
13
这是什么?
我去查查


: redis?



【在 B********u 的大作中提到】
: redis?
G****o
发帖数: 167
14
哈哈。
本来计算机的发展就是要降低入门门槛的,这样看门大妈都能编程。


: you still dont get it....



【在 c*********9 的大作中提到】
: you still dont get it....
t******x
发帖数: 55
15
操作系统经常读取的文件有缓存的,除非是特别大的文件
并发io慢是硬盘的问题,硬盘有io指标的,小文件,比如4K每秒能执行多少io指令
如果是普通硬盘,要换成SSD
G****o
发帖数: 167
16
我甚至想读取这个文件后经一个小程序处理,存在几个数组中,这个程序结束后不释放
内存,而是等着后续100万个jobs直接将变量指向这几个数组。
我这用的老板几十年前写的老fortran程序。真恨不得自己重新写一遍,奈何太复杂,
自己能力不够,收益也不大。


: 如果文件是只读的数据,那就是楼上说的 memory map,

: 去查哪个系统库函数是干这事的,内存里放一份,所有job 都能读到



【在 g***n 的大作中提到】
: 如果文件是只读的数据,那就是楼上说的 memory map,
: 去查哪个系统库函数是干这事的,内存里放一份,所有job 都能读到

G****o
发帖数: 167
17
嗯,在考虑让老板买。。。


: 操作系统经常读取的文件有缓存的,除非是特别大的文件

: 并发io慢是硬盘的问题,硬盘有io指标的,小文件,比如4K每秒能执行多少io指令

: 如果是普通硬盘,要换成SSD



【在 t******x 的大作中提到】
: 操作系统经常读取的文件有缓存的,除非是特别大的文件
: 并发io慢是硬盘的问题,硬盘有io指标的,小文件,比如4K每秒能执行多少io指令
: 如果是普通硬盘,要换成SSD

G****o
发帖数: 167
18
几个GB不知算大还是小


: 操作系统经常读取的文件有缓存的,除非是特别大的文件

: 并发io慢是硬盘的问题,硬盘有io指标的,小文件,比如4K每秒能执行多少io指令

: 如果是普通硬盘,要换成SSD



【在 t******x 的大作中提到】
: 操作系统经常读取的文件有缓存的,除非是特别大的文件
: 并发io慢是硬盘的问题,硬盘有io指标的,小文件,比如4K每秒能执行多少io指令
: 如果是普通硬盘,要换成SSD

t******x
发帖数: 55
19
大,你很难缓存,自己的缓存不如操作系统文件缓存算法效率高

指令

【在 G****o 的大作中提到】
: 几个GB不知算大还是小
:
:
: 操作系统经常读取的文件有缓存的,除非是特别大的文件
:
: 并发io慢是硬盘的问题,硬盘有io指标的,小文件,比如4K每秒能执行多少io指令
:
: 如果是普通硬盘,要换成SSD
:

t******x
发帖数: 55
20
如果是单个几个G文件,可以弄个ram disk
如果太多,总量超过系统内存一半,还是换硬盘吧
相关主题
我驻日大使要求日方停止对中国海监船干扰有时候是觉得中文表达能力需要普及滴提高一下
我记得有这样一个同窗。儿童色情的红线不能碰
老大爷在水版征婚并发包子老邱走地鸡这种虽然iq不太高,但是对社会还是正贡献
进入Military版参与讨论
G****o
发帖数: 167
21
基本就一个3gb的和一个1gb的文件。


: 如果是单个几个G文件,可以弄个ram disk

: 如果太多,总量超过系统内存一半,还是换硬盘吧



【在 t******x 的大作中提到】
: 如果是单个几个G文件,可以弄个ram disk
: 如果太多,总量超过系统内存一半,还是换硬盘吧

t******x
发帖数: 55
22
弄个Ram Disk,网上搜搜怎么弄

【在 G****o 的大作中提到】
: 基本就一个3gb的和一个1gb的文件。
:
:
: 如果是单个几个G文件,可以弄个ram disk
:
: 如果太多,总量超过系统内存一半,还是换硬盘吧
:

G****o
发帖数: 167
23
好的,谢谢
我去看看,有问题再问您


: 弄个Ram Disk,网上搜搜怎么弄



【在 t******x 的大作中提到】
: 弄个Ram Disk,网上搜搜怎么弄
g***n
发帖数: 14250
24
都什么年代了还 ram disk。
OS memory map 都给你弄好了只放一份在内存里

【在 t******x 的大作中提到】
: 弄个Ram Disk,网上搜搜怎么弄
g***n
发帖数: 14250
25
内存里没法让别的job 读
你写到一个中间文件,然后 memory map 了,就能直接读了。
不过你 fortran job 要读 memory map 也需要研究一下有没有库函数支持

【在 G****o 的大作中提到】
: 我甚至想读取这个文件后经一个小程序处理,存在几个数组中,这个程序结束后不释放
: 内存,而是等着后续100万个jobs直接将变量指向这几个数组。
: 我这用的老板几十年前写的老fortran程序。真恨不得自己重新写一遍,奈何太复杂,
: 自己能力不够,收益也不大。
:
:
: 如果文件是只读的数据,那就是楼上说的 memory map,
:
: 去查哪个系统库函数是干这事的,内存里放一份,所有job 都能读到
:

t******x
发帖数: 55
26
OS memory map麻烦死了
ramdisk简单有效提高文件io

【在 g***n 的大作中提到】
: 都什么年代了还 ram disk。
: OS memory map 都给你弄好了只放一份在内存里

g***n
发帖数: 14250
27
你每个job读一份到内存里那就是要额外用一个文件那么大的内存,
10000 个job 的话。。。

【在 t******x 的大作中提到】
: OS memory map麻烦死了
: ramdisk简单有效提高文件io

t******x
发帖数: 55
28
他那个是10000个job对一个文件随机读取的问题吧
他没说清楚。
磁头硬盘随机读取能力很差,如果10000个job都要随机读取,磁头要来回巡道,慢的很。
用RAMdisk就能简单解决,当然用mmap写程序也可以,但是很难写这种程序

【在 g***n 的大作中提到】
: 你每个job读一份到内存里那就是要额外用一个文件那么大的内存,
: 10000 个job 的话。。。

g***n
发帖数: 14250
29
memory map 是系统库函数,直接 C/C++ 当数组用就行了,哪里要写什么程序。
不过 fortran 就不知道了

很。

【在 t******x 的大作中提到】
: 他那个是10000个job对一个文件随机读取的问题吧
: 他没说清楚。
: 磁头硬盘随机读取能力很差,如果10000个job都要随机读取,磁头要来回巡道,慢的很。
: 用RAMdisk就能简单解决,当然用mmap写程序也可以,但是很难写这种程序

1 (共1页)
进入Military版参与讨论
相关主题
儿童色情的红线不能碰最适合塔利班的武器系列之二——国产前卫-3单兵便携式防空导弹 (转载)
老邱走地鸡这种虽然iq不太高,但是对社会还是正贡献最适合塔利班的武器系列之二——国产前卫-3单兵便携式防空导弹 (转载)
如果派google或者facebook去帮助解决12306,能搞定么?少年王立军:从小就显露出“彪”性(组图) (转载)
成人网站有多大 zz (转载)市长工资2440元全国人民都笑了
最适合塔利班的武器系列之二_ 国产QW(前卫)-3单兵防空导弹高铁人为破坏太容易了吧。
武广高铁降速运行了第十二回 三子香江宣铁诏 文侯晋省任庸官
借宝地谈谈刘志军被免职一事zz大公国际: 美国经济恶化 主权信用降至BBB+
加藤嘉一: 中国急需更加敬业,更加负责的铁道部长紧急求助!about identity theft (转载)
相关话题的讨论汇总
话题: 文件话题: br话题: io话题: 内存话题: 读取