当你的应用的性能瓶颈在于I/O而不在于CPU,你需要考虑的是提高硬盘读写的表现,CPU降级影响不大。 现在很多爬虫都是Event Based的。在Node.js和Vert.x等等Event based的软件/框架的应用场景中,CPU的利用率经常也是不高的。 题主可能想探讨的是CPU在I/O中,具体会有多大的影响。我们知道DMA技术,即直接内存访问(Directional Memory Access),这是不需要CPU的干预的。在有DMA的应用场景中,CPU几乎对I/O效率没有影响。常用的SATA硬盘处在PIO mode时,会占用大量CPU资源,不过这也是可以调整成DMA的。DMA往往是在特定的情形中使用,比如DSP中,GPU等等。在题主的应用场景中,显然不是如此。但是I/O所占用的CPU的Overhead,始终无法与CPU密集型的应用相比。假如你的I/O使得CPU利用率达到极高,硬盘相对于CPU则必定高级了很多。
当你的应用的性能瓶颈在于I/O而不在于CPU,你需要考虑的是提高硬盘读写的表现,CPU降级影响不大。
现在很多爬虫都是Event Based的。在Node.js和Vert.x等等Event based的软件/框架的应用场景中,CPU的利用率经常也是不高的。
题主可能想探讨的是CPU在I/O中,具体会有多大的影响。我们知道DMA技术,即直接内存访问(Directional Memory Access),这是不需要CPU的干预的。在有DMA的应用场景中,CPU几乎对I/O效率没有影响。常用的SATA硬盘处在PIO mode时,会占用大量CPU资源,不过这也是可以调整成DMA的。DMA往往是在特定的情形中使用,比如DSP中,GPU等等。在题主的应用场景中,显然不是如此。但是I/O所占用的CPU的Overhead,始终无法与CPU密集型的应用相比。假如你的I/O使得CPU利用率达到极高,硬盘相对于CPU则必定高级了很多。