用python写了个处理数据的程序,程序不是直接操作文件的,直接与硬盘打交道的是mongodb。
在每处理一条信息,就向mongodb读写一次数据的情况下,IO不到硬盘最大IO的十分之一,CPU总是在70-80%(进程数和CPU线程数相等的情况下)
在每次预读一定条数的信息来处理的话,CPU就可以基本上满起来了,IO也可以歇一会然后蹦到最大IO,然后歇一会,这样循环下来。
我猜想的是,硬盘读写导致运算中断,所以在进程数和CPU线程数一样的时候,相当于每个CPU线程都是在运算中间等待硬盘读写中断,所以导致这样的结果。
可惜内存不够了,开不了多几个进程来验证这个想法,如果是这样的话,我就考虑加个内存。
谢谢了。
在每处理一条信息,就向mongodb读写一次数据的情况下,IO不到硬盘最大IO的十分之一,CPU总是在70-80%(进程数和CPU线程数相等的情况下)
在每次预读一定条数的信息来处理的话,CPU就可以基本上满起来了,IO也可以歇一会然后蹦到最大IO,然后歇一会,这样循环下来。
我猜想的是,硬盘读写导致运算中断,所以在进程数和CPU线程数一样的时候,相当于每个CPU线程都是在运算中间等待硬盘读写中断,所以导致这样的结果。
可惜内存不够了,开不了多几个进程来验证这个想法,如果是这样的话,我就考虑加个内存。
谢谢了。