我使用分布式用户空间文件系统 (GlusterFS),我想确保 GlusterFS 进程始终拥有所需的计算能力。
我的网格的每个执行节点都有 2 个 CPU,每个 CPU 有 4 个内核,每个内核有 2 个线程(Linux 可以看到 16 个“处理器”)。
我的目标是保证 GlusterFS 进程有足够的处理能力来保证可靠、响应迅速和快速。(这里没有营销,只是系统管理员的梦想;-)
我考虑两个要点:
- GlusterFS 进程
- 用于数据访问的 I/O(在本地磁盘或远程磁盘上)
我想过在特定的“处理器”上绑定 GlusterFS 实例。
我想确定:
- 没有网格作业会影响内核和 GlusterFS 实例
- 研究人员的工作不会受到系统进程的影响(我想保留一个内核池来执行作业,并确保没有系统进程会使用这些 CPU)
但是 I/O 呢?当我们处理大量数据(几 TB)时,我们会遇到很多中断。
如何在我的处理器上分配这些操作?什么是“最佳实践”?
感谢您的意见!
将用户空间固定到特定处理器有时可以使其性能更加一致;但不是内核。(检查任务集)
如果可能的话,您会将用户空间/内核 switchtme(已经是操作系统性能的一个可衡量因素)转变为处理器间通信/同步问题。差很多数量级。
编辑: 既然您已经删除了“固定内核”的想法,那就更合理了。是的,您可以使用 taskset 启动所有网格进程,并为 GlusterFS 留出一两个 CPU。举个类似的例子,在 Xen 系统中,为处理所有 I/O 的 Dom0 保留一个 CPU 被认为是“最佳实践”。
这就是我不想在生产中使用 FUSE 文件系统的原因……我使用的是 PVFS2。