最近,我对多线程应用程序如何使用CPU核心进行了一些研究。我可以使用以下命令查看每个线程正在使用哪些核心:
例如:ceph-osd是一个多线程应用程序
for i in $(pgrep ceph-osd); do ps -mo pid,tid,fname,user,psr -p $i;done
我的CPU有32个核心和72个线程,因此ceph-osd将有72个TID(线程ID):
PID TID COMMAND USER PSR
336157 - ceph-osd ceph -
- 336157 - ceph 6
- 336160 - ceph 51
- 336162 - ceph 57
- 336163 - ceph 23
- 336164 - ceph 22
- 336168 - ceph 7
- 336169 - ceph 17
- 336203 - ceph 1
...
...
但我不明白的是:
这个 ceph-osd 进程将使用所有 CPU 核心,或者线程是否刚刚分配并且可能并不总是在使用?
如果我使用 numactl 定义亲和力并将进程绑定到特定线程,它会与以前有什么不同吗?
我的服务器上有多个 ceph-osd 进程,那么手动绑定时是否有助于提高性能?
提前致谢。