自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

判斷 Linux 進程運行在哪個 CPU 內(nèi)核上的 4 個方法

開發(fā)
問題:我有個 Linux 進程運行在多核處理器系統(tǒng)上。怎樣才能找出哪個 CPU 內(nèi)核正在運行該進程?

問題:我有個 Linux 進程運行在多核處理器系統(tǒng)上。怎樣才能找出哪個 CPU 內(nèi)核正在運行該進程?

[[150819]]

當你在 多核 NUMA 處理器上運行需要較高性能的 HPC(高性能計算)程序或非常消耗網(wǎng)絡資源的程序時,CPU/memory 的親和力是限度其發(fā)揮***性能的重要因素之一。在同一 NUMA 節(jié)點上調(diào)度最相關的進程可以減少緩慢的遠程內(nèi)存訪問。像英特爾 Sandy Bridge 處理器,該處理器有一個集成的 PCIe 控制器,你可以在同一 NUMA 節(jié)點上調(diào)度網(wǎng)絡 I/O 負載(如網(wǎng)卡)來突破 PCI 到 CPU 親和力限制。

作為性能優(yōu)化和故障排除的一部分,你可能想知道特定的進程被調(diào)度到哪個 CPU 內(nèi)核(或 NUMA 節(jié)點)上運行。

這里有幾種方法可以 找出哪個 CPU 內(nèi)核被調(diào)度來運行給定的 Linux 進程或線程。

方法一

如果一個進程使用 taskset 命令明確的被固定(pinned)到 CPU 的特定內(nèi)核上,你可以使用 taskset 命令找出被固定的 CPU 內(nèi)核:

$ taskset -c -p <pid>

例如, 如果你對 PID 5357 這個進程有興趣:

$ taskset -c -p 5357
pid 5357's current affinity list: 5

輸出顯示這個過程被固定在 CPU 內(nèi)核 5上。

但是,如果你沒有明確固定進程到任何 CPU 內(nèi)核,你會得到類似下面的親和力列表。

pid 5357's current affinity list: 0-11

輸出表明該進程可能會被安排在從0到11中的任何一個 CPU 內(nèi)核。在這種情況下,taskset 不能識別該進程當前被分配給哪個 CPU 內(nèi)核,你應該使用如下所述的方法。

方法二

ps 命令可以告訴你每個進程/線程目前分配到的 (在“PSR”列)CPU ID。

$ ps -o pid,psr,comm -p <pid>
  PID PSR COMMAND
5357  10 prog

輸出表示進程的 PID 為 5357(名為”prog”)目前在CPU 內(nèi)核 10 上運行著。如果該過程沒有被固定,PSR 列會根據(jù)內(nèi)核可能調(diào)度該進程到不同內(nèi)核而改變顯示。

方法三

top 命令也可以顯示 CPU 被分配給哪個進程。首先,在top 命令中使用“P”選項。然后按“f”鍵,顯示中會出現(xiàn) “Last used CPU” 列。目前使用的 CPU 內(nèi)核將出現(xiàn)在 “P”(或“PSR”)列下。

$ top -p 5357

Linux 有問必答:如何知道進程運行在哪個 CPU 內(nèi)核上?

相比于 ps 命令,使用 top 命令的好處是,你可以連續(xù)監(jiān)視隨著時間的改變, CPU 是如何分配的。

方法四

另一種來檢查一個進程/線程當前使用的是哪個 CPU 內(nèi)核的方法是使用 htop 命令。

從命令行啟動 htop。按 鍵,進入”Columns”,在”Available Columns”下會添加 PROCESSOR。

每個進程當前使用的 CPU ID 將出現(xiàn)在“CPU”列中。

Linux 有問必答:如何知道進程運行在哪個 CPU 內(nèi)核上?

請注意,所有以前使用的命令 taskset,ps 和 top 分配CPU 內(nèi)核的 IDs 為 0,1,2,…,N-1。然而,htop 分配 CPU 內(nèi)核 IDs 從 1開始(直到 N)。

責任編輯:王雪燕 來源: linux.cn
相關推薦

2009-06-19 21:02:11

2014-08-15 10:23:51

ubuntuCinnamon

2023-04-12 15:37:31

Linux系統(tǒng)CPU

2014-01-07 13:07:44

YARN計算框架

2012-05-24 09:47:26

ibmdw

2012-05-28 16:20:44

Linux

2015-10-28 13:26:25

Hyper-VFreeBSDLinux

2018-02-24 17:50:43

Linux進程ID命令

2013-11-12 11:01:46

Linux內(nèi)核

2020-02-05 08:00:00

LinuxMacOSWindows

2011-08-30 13:10:14

Python

2018-02-25 10:17:31

Linux內(nèi)核版本穩(wěn)定內(nèi)核

2019-04-10 13:43:19

Linux內(nèi)核進程負載

2017-05-03 11:10:14

Linux進程監(jiān)控cpustat

2021-07-15 09:40:57

MinikubeKubernetes集群

2012-10-10 09:32:51

虛擬化

2014-09-24 09:29:11

2010-02-02 15:41:00

Linux內(nèi)核

2019-06-04 11:17:39

Windows Linux命令

2021-04-15 05:51:25

Linux
點贊
收藏

51CTO技術棧公眾號