真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux綁核命令 linux進程綁核

如何將一個進程(線程)綁定到一個固定的CPU

第一種:linux的shell命令行方式,命令名字為taskset。第二種就是代碼實現(xiàn)級別的了,pthread_setaffinity_np和sched_setaffinity函數(shù)接口。

成都創(chuàng)新互聯(lián)公司擁有十載成都網(wǎng)站建設工作經(jīng)驗,為各大企業(yè)提供網(wǎng)站設計、成都網(wǎng)站建設服務,對于網(wǎng)頁設計、PC網(wǎng)站建設(電腦版網(wǎng)站建設)、app開發(fā)定制、wap網(wǎng)站建設(手機版網(wǎng)站建設)、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、申請域名等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設計、網(wǎng)絡營銷經(jīng)驗,集策劃、開發(fā)、設計、營銷、管理等網(wǎng)站化運作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設項目的能力。

第一種方式我已經(jīng)驗證過了,確實可行。同時驗證了我心中的疑問:如果將某個線程綁定到某個物理核上之后,在此線程運行結(jié)束前,會不會有別的線程被調(diào)度到此物理核上執(zhí)行? 寫了一個死循環(huán)驗證了下,發(fā)現(xiàn)綁定之后是不會調(diào)度別的線程在此核上運行的!(肉眼觀察的,時不時觀察下,沒發(fā)現(xiàn)別的線程在此核上執(zhí)行;對比了下沒有綁定的情況,會發(fā)現(xiàn)過段時間此線程就會被調(diào)度到別的核心上執(zhí)行)

此種方式有個問題,就是只有線程運行起來后才會被綁定到某個核上,不夠及時。

具體的方式為:

1.首先根據(jù)系統(tǒng)的差別運行如下安裝命令:

sudo apt-get install util-linux (Debian,Ubuntu or Linux Mint)

sudo yum install util-linux (Fedora,CentOS or RHEL)

2.相關(guān)命令的使用:

2.1 使用命令 taskset -p PID 來獲得此Process的 CPU affinity。

eg: taskset -p 2915 ------ pid 2915's current affinity mask:ff; ff=="1111 1111",沒一個1代表一個核,共8個核,能用的核數(shù)也為8個核。

2.2 使用命令 taskset -cp PID 可獲得數(shù)字形式的CPU affinity。

eg: taskset -cp 2915 ------ pid 2915's current affinity list: 0--7。

接下來為將進程pin到某個核上的命令;

2.3 taskset -p COREMASK PID

eg:taskset -p 0x11 9030 ------pid 9030's current affinity mask: ff , pid 9030's new affinity mask: 11 。意思就是將此進程綁定到了CPU core 0 and 4。

2.4 taskset -cp CORE-LIST PID

eg:taskset -cp 0,4 9030 ------the same as below.

With "-c" option, you can specify a list of numeric CPU core IDs separated by commas, or even include ranges (e.g., 0,2,5,6-10).

2.5 taskset COREMASK EXECUTABLE

eg: taskset 0x1 xxxx -----"xxxx" represented the name of one program.

另外:參考文章最后的位置說到,綁定到此物理核之后,別的進程(線程)還可以調(diào)度到此核上執(zhí)行,但是沒說綁定的這個線程沒執(zhí)行完之前是否會被別的線程擠掉。根據(jù)我的觀察是不會被擠掉,這我在文章的開頭也有提到。

linux 查看線程綁定在哪個核心 proc

使用top命令,具體用法是 top -H,加上這個選項,top的每一行就不是顯示一個進程,而是一個線程。

使用ps命令,具體用法是 ps -xH,這樣可以查看所有存在的線程,也可以使用grep作進一步的過濾。

使用ps命令,具體用法是 ps -mq PID,這樣可以看到指定的進程產(chǎn)生的線程數(shù)目。

更進一步,其實一些系統(tǒng)監(jiān)控工具,在本質(zhì)上也是讀取的系統(tǒng)產(chǎn)生的文件罷了。

Linux如何將進程綁定運行在指定CPU上

綁定cpu方式:

c語言:

sched_setaffinity(0, sizeof(mask), mask)

shell命令:

在grup啟動時傳給內(nèi)核參數(shù): isolcpus=2-15, 這里表示隔離第3到16個CPU, Linux程序只跑在第一和第二個CPU上, 空閑的CPU我們可以指定跑進程了.

這是內(nèi)核文檔里對內(nèi)核參數(shù)的解釋:

isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler.

Format:

cpu number,...,cpu number

or

cpu number-cpu number

(must be a positive range in ascending order)

or a mixture

cpu number,...,cpu number-cpu number

This option can be used to specify one or more CPUs

to isolate from the general SMP balancing and scheduling

algorithms. You can move a process onto or off an

"isolated" CPU via the CPU affinity syscalls or cpuset.

cpu number begins at 0 and the maximum value is

"number of CPUs in system - 1".

This option is the preferred way to isolate CPUs. The

alternative -- manually setting the CPU mask of all

tasks in the system -- can cause problems and

suboptimal load balancer performance.

linux nice 命令詳解

功能說明:設置優(yōu)先權(quán)。

語法:nice [-n 優(yōu)先等級][--help][--version][執(zhí)行指令]

補充說明:nice指令可以改變程序執(zhí)行的優(yōu)先權(quán)等級。

參數(shù):-n優(yōu)先等級或-優(yōu)先等級或--adjustment=優(yōu)先等級  設置欲執(zhí)行的指令的優(yōu)先權(quán)等級。等級的范圍從-20-19,其中-20最高,19最低,只有系統(tǒng)管理者可以設置負數(shù)的等級。

--help  在線幫助。

   --version  顯示版本信息。

linux renice 命令詳解

功能說明:調(diào)整優(yōu)先權(quán)。

語法:renice [優(yōu)先等級][-g 程序群組名稱...][-p 程序識別碼...][-u 用戶名稱...]

補充說明:renice指令可重新調(diào)整程序執(zhí)行的優(yōu)先權(quán)等級。預設是以程序識別碼指定程序調(diào)整其優(yōu)先權(quán),您亦可以指定程序群組或用戶名稱調(diào)整優(yōu)先權(quán)等級,并修改所有隸屬于該程序群組或用戶的程序的優(yōu)先權(quán)。等級范圍從-20--19,只有系統(tǒng)管理者可以改變其他用戶程序的優(yōu)先權(quán),也僅有系統(tǒng)管理者可以設置負數(shù)等級。

參數(shù):

-g 程序群組名稱  使用程序群組名稱,修改所有隸屬于該程序群組的程序的優(yōu)先權(quán)。

-p 程序識別碼  改變該程序的優(yōu)先權(quán)等級,此參數(shù)為預設值。

-u 用戶名稱  指定用戶名稱,修改所有隸屬于該用戶的程序的優(yōu)先權(quán)。

taskset設定cpu親和力,cpu親和力是指

CPU調(diào)度程序?qū)傩躁P(guān)聯(lián)性是“鎖定”一個進程,使他只能在一個或幾個cpu線程上運行。對于一個給定的系統(tǒng)上設置的cpu。給定CPU親和力和進程不會運行在任何其他CPU。注意,Linux調(diào)度器還支持自然CPU關(guān)聯(lián):(不能讓這個cpu只為這一個進程服務)

這里要注意的是我們可以把某個程序限定在某一些CPU上運行,但這并不意味著該程序可以獨占這些CPU,其實其他程序還是可以利用這些CPU運行。如果要精確控制CPU,taskset就略嫌不足,cpuset才是可以

-a, --all-tasks 操作所有的任務線程-p, --pid 操作已存在的pid-c, --cpu-list 通過列表顯示方式設置CPU

(1)指定1和2號cpu運行25718線程的程序

taskset -cp 1,2 25718

(2),讓某程序運行在指定的cpu上 taskset -c 1,2,4-7 tar jcf test.tar.gz test

(3)指定在1號CPU上后臺執(zhí)行指定的perl程序

taskset –c 1 nohup perl pi.pl

資深Linux運維工程師必須掌握的核心命令

查看CPU信息可以使用lscpu命令

從命令的輸出結(jié)果可以看得出來CPU的型號是 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz,CPU(s)是4表示同時可以執(zhí)行四個任務。

如果想要同時執(zhí)行更多的任務,可以在VMware WorkStation中修改,修改完成以后會立即生效。

除了lscpu以外,還可以使用cat /proc/cpuinfo命令查看CPU信息,不過它是以每核分開顯示的。

使用free或者是cat /proc/meminfo可以查看當前系統(tǒng)的內(nèi)存信息,包括總內(nèi)存、已經(jīng)使用內(nèi)存以及可用內(nèi)存信息

Linux和Windows不同的是Linux的圖形界面只是它的一個程序,而不是必備組件。我們之前安裝CentOS8.4選擇的Server With GUI包含GNOME桌面的圖形環(huán)境,我們可以使用init 3命令關(guān)閉圖形,CentOS8會出現(xiàn)一個字符登錄界面。

然后再使用free -h觀察已經(jīng)使用的內(nèi)存只有334M,相比圖形界面的730M 減少了接近400M內(nèi)存,為了節(jié)省內(nèi)存,生產(chǎn)環(huán)境一般不會安裝和使用圖形界面。

想要再切回圖形界面使用init 5命令即可。

還可以使用runlevel命令查看當前系統(tǒng)運行的模式,其中輸出結(jié)果的3表示之前是字符界面,5表示當前系統(tǒng)運行的是圖形界面

使用lsblk命令可以查看磁盤信息,包括有幾塊磁盤以及每塊磁盤的分區(qū)、容量信息

通過命令的執(zhí)行結(jié)果可以得知目前CentOS8系統(tǒng)上有三塊磁盤,分別是sda,sdb,sdc,其中sdb和sdc沒有分區(qū),

而sda磁盤是在安裝系統(tǒng)時創(chuàng)建了四個分區(qū),具體信息如下表格所示

除此以外還可以使用 cat /proc/partitions命令查看磁盤信息,從命令的執(zhí)行結(jié)果可以看出容量還是以KB為單位。

通過arch命令可以查看當前系統(tǒng)架構(gòu)為x86_64,這也是目前主流的系統(tǒng)架構(gòu)。

不同的Linux發(fā)行版使用的Linux內(nèi)核版本不同,通過uname -r可以查看Linux系統(tǒng)的內(nèi)核版本

通過 cat /etc/os-release 命令或者是lsb_release -a命令可以查看操作系統(tǒng)的版本,后期在開發(fā)程序時不同的操作系統(tǒng)版本需要做不同的處理。

查看Ubuntu Server的版本

查看CentOS8的版本

CentOS還可以使用 cat /etc/redhat-release版本

Linux中的時間有系統(tǒng)時間和硬件時間兩種

date和clock可以使用分號隔開后同時執(zhí)行看系統(tǒng)時間和硬件時間

目前我的系統(tǒng)時間和硬件時間相差了18秒

如果硬件時間是準確的,那么就通過命令clock -s以硬件時間為準,同步校正系統(tǒng)時間。

如果系統(tǒng)時間是準確的,那么通過clock -w命令以系統(tǒng)時間為準,同步校正硬件時間

不同的國家在同一時刻所處的時間是不同的,因為時區(qū)不同。

例如中國就是東八區(qū),東八區(qū)和格林威治的時區(qū)相比相差8個小時(也就是比北京時間慢了8個小時),之前在安裝操作系統(tǒng)的時候設置的時區(qū)就是Asia/Shanghai,,通過timedatectl status查看當前時間狀態(tài),其中 Universal time就是格林威治時間,而Local Time就是系統(tǒng)設置時區(qū)(Asia/Shanghai)的時間,它們兩者剛好相差了8個小時。 Time zone: Asia/Shanghai (CST, +0800) 表示當前的時區(qū)是亞洲上海。

如果現(xiàn)在你去了法國巴黎,可以通過timectl set-timezone 設置時區(qū)為歐洲巴黎,當修改時區(qū)后使用date命令查看系統(tǒng)時間顯示的就是當前法國的巴黎時間,相比北京時間慢了6個小時。

修改時區(qū)最終影響的是 /etc/localtime文件

不過目前我在中國,因此還是改回亞洲上海

timedatectl list-timezones可以查看所有時區(qū)

cal命令可以查看當前月份的日歷,例如今天是2021年10月5號

查看指定月份的日歷

還可以查看指定年份的日歷

生產(chǎn)環(huán)境不能隨便關(guān)機和重啟!!! 因為服務器基本都是 7*24 對外提供服務

測試環(huán)境或者是本地虛擬機安裝的Linux服務器可以按需求關(guān)機或者重啟

關(guān)機可以使用halt或者poweroff命令

而shutdown可以實現(xiàn)關(guān)機或者重啟,shutdown -r表示重啟,即reboot,shutdown -h表示關(guān)機,即halt。 -c表示取消關(guān)機或重啟。

除此以外shutdown 還可以指定時間來關(guān)機或重啟,默認是1分鐘后執(zhí)行。

關(guān)機和重啟命令的常見用法

Linux下有nano和vim等文本編輯器,目前我們先使用nano來編輯文本。

如果系統(tǒng)上沒有安裝nano文本編輯器,那么在使用之前首先需要使用yum install -y nano命令來安裝nano文本編輯器

在使用nano進行文本編輯時,nano后面跟文件路徑即可打開文件,然后可以直接修改文件,類似于windows的記事本,修改完成后然后按Ctrl+x退出,接著按y保存修改,回車后退出nano。

然后使用nano /etc/motd來修改該文件,motd文件是用戶登錄之后提示的內(nèi)容

然后輸入Welcome to my class

之后按Ctrl+x退出nano編輯器,按y保存到文件匯中,然后按回車鍵確認修改。

再重新登錄CentOS8.4

登錄成功之后就會看到/etc/motd文件內(nèi)容顯示在終端上

我這里準備了一個motd文件,首先使用MobaXterm終端上傳到/etc目錄下覆蓋現(xiàn)有的motd文件,在使用MobaXterm終端登錄CentOS8.4-1后,首先將SSH Broswer的路徑切換到/etc目錄下

然后點擊上傳文件的按鈕

選擇提前準備好的motd文件上傳到/etc目錄下

然后再次重新登錄系統(tǒng)就會看到一個大佛

大家可以自行訪問 在線生成ASCII(圖)藝術(shù)字,然后將內(nèi)容復制到motd文件即可。

當我們登錄Linux打開一個終端窗口,然后輸入命令,用戶與計算機的這種臨時交互被稱為一次會話(Session)、會話的一個重要的特點就是窗口與其中啟動的進程是連接在一起的,打開窗口則會話開始,關(guān)閉窗口則會話結(jié)束,而且會話內(nèi)部的進程也會隨之而終止,不管有沒有運行完成。

這里舉一個例子,我們首先使用XShell遠程登錄CentOS8.4-1,然后使用ping 10.0.0.103命令檢測是否能夠連接10.0.0.103,也就是Ubuntu Server 20.04.3-1那臺機器

命令執(zhí)行的結(jié)果顯示能夠連接,而且只要你不關(guān)閉窗口會一直顯示收到數(shù)據(jù)以及耗時。

然后我們復制一個會話

然后使用ps aux|grep ping 查看ping的進程信息,因為沒有關(guān)閉會話窗口所以進程還在

當我們關(guān)閉之前開啟的會話窗口之后

再次使用ps aux|grep ping查看進程會發(fā)現(xiàn)ping進程不存在了

為了解決上述的問題,我們就可以將會話與窗口解綁,也就是窗口關(guān)閉時會話并不會終止,而是繼續(xù)運行,等到以后需要的時候,再讓會話綁定其他窗口。

而終端復用器程序(例如screen,tmux)就是將會話與窗口的解綁工具,將它們徹底分離。

首次運行screen時會發(fā)現(xiàn)Shell提示command not found

我們需要使用yum install -y screen 來安裝screen,但是執(zhí)行之后發(fā)現(xiàn)提示錯誤:: Unable to find a match: screen

Centos8安裝screen需要使用epel來安裝,安裝epel后,再安裝screen,解決centos8無法安裝screen的問題

然后再執(zhí)行yum install -y screen 便可安裝成功

Screen安裝成功

在安裝完screen后就可以使用了,首先在終端輸入screen,然后你就會看到屏幕好像是刷新了一下,本質(zhì)就是一個會話

然后再次運行ping 10.0.0.103

由于開啟了screen,即使關(guān)閉了所有的會話窗口,你會發(fā)現(xiàn)使用ps aux |grep ping 命令查看ping命令的進程也還在。

如果后期在做運維工作,有些命令很耗時又怕誤操作關(guān)閉會話導致命令的進程關(guān)閉就可以使用screen。

screen除了創(chuàng)建會話,能讓命令關(guān)閉窗口后繼續(xù)在后臺執(zhí)行的功能以外,還能夠?qū)崿F(xiàn)遠程桌面共享,從而實現(xiàn)遠程協(xié)助的功能。

實現(xiàn)該功能必須滿足兩個條件,兩個用戶必須使用同一個賬號登錄同一臺機器。

例如這里小紅和小明同時使用root賬號登錄了CentOS8.4,其中左邊的窗口是小紅,右邊的窗口是小明

然后小紅使用screen -S help開啟一個遠程會話,會話的名稱叫help

然后小明使用screen -x help加入小紅開啟的會話

此時小明可以看到小紅窗口的內(nèi)容

當小明解決小紅的問題后,可以使用ctrl a,d退出當前會話

如果小明不知道小紅的會話名稱,可以使用screen -ls獲取當前會話

echo就是用于輸出信息

echo輸出固定字符串

echo輸出變量值

echo輸出轉(zhuǎn)義字符

echo 默認可以實現(xiàn)換行

echo輸出信息還可以帶顏色

echo還可以清除屏幕,等價于clear命令或者是快捷鍵Ctrl+l


網(wǎng)頁標題:linux綁核命令 linux進程綁核
文章位置:http://weahome.cn/article/hjdhgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部