1
aisk 2016-08-03 14:41:55 +08:00
每个进程读文件,导致 CPU 吃不满了吧。
|
2
northisland 2016-08-03 14:46:34 +08:00
一个文件大约需要 0.4s
全部 250s 左右 要是机械硬盘,肯定做不到。想硬盘的磁头,往返于不同磁道。 把东西度内存里 |
3
9hills 2016-08-03 14:47:32 +08:00
看 IO util
|
4
wmhx 2016-08-03 14:48:16 +08:00
很明显这样的小文件,cpu 处理并太耗资源,而频繁的 IO 才更拖后腿.
|
5
necomancer OP @aisk 我昨天测试了一下,在作业比较空闲的时候计算 3000 个文件最快只用了 80 多秒……目前机器有别人跑作业还没测, 30000 个文件我觉得也就应该 800 秒才对啊……
|
6
herozhang 2016-08-03 14:52:42 +08:00
把读取文件的行为做成异步的或者流式的?试一下?
|
7
hitmanx 2016-08-03 16:54:49 +08:00
要确定是不是 io-bound 造成的有个简单方式可以试一下,你把每个线程现在干的活换成 cpu-bound 的,比如一个死循环计算什么东东,尽量不要保留与磁盘的 io ,然后再观察下 cpu 使用率?
|
8
cszhiyue 2016-08-03 17:45:14 +08:00
估计 io 是瓶颈
|
9
aisk 2016-08-03 17:51:21 +08:00
如果文件大小比机器内存小的话,可以试试把文件都丢到 /dev/shm 里跑跑看。
|
10
petelin 2016-08-03 19:47:07 +08:00 via Android
@herozhang 如果 io 是瓶颈的话你这样做是不是无效的? cpu 跑的很快,开的线程也 hold 住。基本没差的吧。
|
11
abxialiang 2016-08-04 06:28:18 +08:00
直接启动 48 个进程而不用 pp 测试一下就知道了
|
12
necomancer OP |