我使用分布式用户空间文件系统(GlusterFS),我希望确保GlusterFS进程始终具有所需的计算能力。
我的网格的每个执行节点都有2个CPU,每个CPU有4个内核,每个内核有2个线程(Linux可以看到16个“处理器”)。
我的目标是确保GlusterFS进程具有足够的处理能力,可靠,响应迅速。 (这里没有市场营销,只是系统pipe理员的梦想;-)
我考虑两点:
我想过在特定的“处理器”上绑定GlusterFS实例。
我想确保:
但是I / O呢? 当我们处理大量的数据(几兆字节)时,我们会有很多的干扰。
我如何在我的处理器上分配这些操作? 什么是“最佳实践”?
感谢您的意见!
将用户空间固定到特定处理器有时可以使其更一致地执行; 但不是内核。 (检查任务集 )
如果可能的话,你将把用户空间/内核开关(已经成为操作系统性能的一个可测量的因素)变成处理器间通信/同步问题。 许多数量级更糟。
编辑:现在你已经删除了“钉住内核”的想法,这是更合理的。 是的,您可以使用taskset启动所有网格进程,并为GlusterFS留出一个或两个CPU空闲。 对于一个类似的例子,在Xen系统中被认为是为处理所有I / O的Dom0保留一个CPU的“最佳实践”。
这就是为什么我不想在生产中使用FUSE文件系统…我使用的是PVFS2。