Chinaunix
标题:
【讨论帖】并发进程数与cpu 核数的关系
[打印本页]
作者:
xiaojianredhat
时间:
2012-06-11 22:47
标题:
【讨论帖】并发进程数与cpu 核数的关系
项目打算采用多进程处理,计划在节点上同时启动多个程序处理任务,
目前节点配置基本都是4核,内存4G,那么我应该在每个节点启动多少进程数是合适的?
因为程序的任务会有大量的I/O,如果我启动4个任务,那可能会出现4个任务都在执行长四溅i/o,而导致CPU浪费
如果我启动到15个,又有可能出现系统内存不足,而导致系统频繁使用缓存,CPU占用急剧上升,I/O也出现瓶颈
1. 能否有指导方法,来设置合适的进程数
2. 由于进程使用涉及CPU,内存,I/O等资源,是不是只能通过验证的方法来找最佳进程数
作者:
linuxfellow
时间:
2012-06-12 18:20
不是任务的个数,重要的是,每个进程占cpu多少capacity, 多少memory;从资源的角度,而不是进程个数去考虑。
作者:
vupiggy
时间:
2012-06-12 21:32
本帖最后由 vupiggy 于 2012-06-12 14:47 编辑
xiaojianredhat 发表于 2012-06-11 15:47
项目打算采用多进程处理,计划在节点上同时启动多个程序处理任务,
目前节点配置基本都是4核,内存4G,那 ...
你的这个问题目前死没解!不同程序访问内存的模式都不尽相同,操作系统内部无法事先知道应用进程什么时候去访问一个内存块,访问过的内存会闲置多久(LRU 也就是个最不坏的选择,其实结果还是很糟糕),这是当前做 Work Load Manager 的公司面临的共同问题。别想了,智能的,机械化的算法设计超出你甚至你们公司的能力,还是靠经验吧。调度算法解决多资源共享竞争问题复杂得一塌糊涂,动态的伸缩并行执行进程以确保所有资源(CPU + RAM + I/O 设备)的优化使用,你要是想出来这么一个算法,恭喜,什么剑桥,斯坦福,麻省理工的博士学位你可以到手了。
作者:
vupiggy
时间:
2012-06-12 21:40
本帖最后由 vupiggy 于 2012-06-12 14:48 编辑
一个工程的解决方案可能是:为你预先知道某些占用内存少,CPU 密集的任务建一个队列,当你的主任务在等待 I/O 的时候调度这个队列里的任务运行,等主任务恢复醒来以后暂停那个夹塞的家伙,这种方式可以保证 CPU 的使用率高。前提是要有个历史记录机制侦测并保存哪些应用程序在什么规模的输入条件下占用多少资源到数据库里,以后提交任务的时候告诉内核,把历史记录反馈到调度算法影响其决策。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2