我正在尝试在多核计算机上运行一些基准测试,我想告诉Linux内核仅避免使用某些内核,除非明确告知要使用它们。
我的想法是,我可以留出一些内核(该机器有6个物理内核)进行基准测试,并使用cpu mask仅允许将基准测试过程应用于给定的内核。
这可行吗?
我正在尝试在多核计算机上运行一些基准测试,我想告诉Linux内核仅避免使用某些内核,除非明确告知要使用它们。
我的想法是,我可以留出一些内核(该机器有6个物理内核)进行基准测试,并使用cpu mask仅允许将基准测试过程应用于给定的内核。
这可行吗?
Answers:
您需要一些处理器关联性(或CPU关联性)。
相关的系统调用是sched_setaffinity(2),但如果要为此编写基准测试,则应通过pthread_set_affinity_np(3)使用它。
相关的命令是taskset(1),您可以在要进行基准测试的命令(或您的shell)上使用它。
如果可能,请注意不要因与基准测试无关的其他任务而使机器负载不大。
或者,使用某些虚拟机管理程序(例如Xen),然后将Linux作为该虚拟机管理程序的来宾操作系统启动。然后配置xen
为仅使用某些受限制的CPU内核集(我不知道确切的详细信息,您需要了解)。在Debian(和相关)的分布,你可能会像安装包xen-linux-system-amd64
,xen-hypervisor-amd64
,xen-utils
等(我用在Debian /希德xen-hypervisor-4.5-amd64
,xen-linux-system-4.0.0-1-amd64
,xen-utils-4.5
等...)。
可能有一些配置Linux内核的方法(也许是在内核编译时,或者通过Grub加载器将特定参数传递给内核)来限制可用内核的数量。
当然,最好是,一个标杆桌面Linux PC-某些程序的时候-例如,照顾,以避免许多外运行的进程(用ps auxw
,pstree -p
,top
找到这些)。至少,关闭并退出大多数交互式应用程序(浏览器,如firefox,电子邮件,编辑器,IDE等,如Eclipse),并仅保留少量终端进行基准测试。您甚至在未登录时(甚至没有任何GUI会话,例如Gnome或KDE或Xfce等正在运行),甚至可能以批处理模式进行基准测试(使用batch
或at
运行基准测试)。
at
或batch
)运行基准测试(因此不要运行任何消耗性会话)。