1. 程式人生 > >linux的cpu和磁碟io優先順序設定

linux的cpu和磁碟io優先順序設定

Original url:

https://www.52os.net/articles/reduce-cpu-io-priority.html

在伺服器上常常會執行一些備份指令碼,當備份的檔案比較多時,會佔用大量的cpu和磁碟io。為了不影響生產業務,應儘量減少這些指令碼執行時使用的cpu和磁碟io。通常linux下限制cpu使用有三種方法:

  1. nice/renice : 調整程序使用cpu的優先順序
  2. cpulimit :不修改程序的nice值,通過暫停程序一段時間,來限制cpu使用
  3. cgroups :核心提供的機制,可以限制、記錄、隔離一組程序所使用的cpu、記憶體、磁碟、網路等資源,是docker等容器的基礎技術之一

限制磁碟io :

  1. ionice : 調整io排程的優先順序
  2. cgroups

這裡只說nice和ionice,實際上nice和ionice只是改變優先順序,並沒有真正的限制

一、nice

1.1 程序優先順序

要理解nice值,首先要說明一下優先順序的概念,先來看一下程序的資訊:

[[email protected] ~]# ps -efl
F S UID         PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
5 S asterisk  5319  1607  -5  80   0 - 119325 ep_pol Mar23 ?       00:03:55 /usr/sbin/httpd
  • PRI 指程序優先順序,優先順序小的程序會獲得比較多的CPU時間,程式就會被優先處理
  • NI 即為nice值
  • 兩者關係為 :PRI(new)=PRI(default)+nice

其中nice值可以使用者指定,nice的預設值為0,root可用範圍從-20到19,普通使用者只能用0到19,值越小PRI(new)越小,CPU執行優先順序越高。同時可以知道:只有root能提高優先順序,普通使用者只能降低優先順序。

1.2 設定程式啟動時的優先順序

nice 只有一個引數 : -n,啟動程式時指定優先順序:

nice -n -20  /opt/backup.sh  #優先順序最高
nice -n 19  /opt/backup.sh   #優先順序最低

1.3 設定程式執行時的優先順序

對於已經在執行的程式,如果需要調整優先順序,需要用renice命令,設定正在執行程式nice的值為15:

[[email protected] ~]# renice -n +15 5319 

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
5 S asterisk  5319  1607  -5  95  15  - 119325 ep_pol Mar23 ?       00:03:55 /usr/sbin/httpd

root使用者可以為其它使用者或組設定nice值:

[[email protected] ~]# renice -n +15 -u zabbix   #設定zabbix使用者的所有程序nice值為15
[[email protected] ~]# renice -n +15 -u zabbix   #設定zabbix使用者的所有程序nice值為15

還可以為程序組設定nice值,檢視程序組:


[[email protected] ~]# ps -efj 
UID        PID  PPID  PGID   SID  C STIME TTY          TIME CMD
asterisk  5296  1607  1607  1607  0 Mar23 ?        00:03:54 /usr/sbin/httpd
asterisk  5319  1607  1607  1607  0 Mar23 ?        00:03:55 /usr/sbin/httpd
asterisk  5394  1607  1607  1607  0 Mar23 ?        00:03:55 /usr/sbin/httpd

apache的程序組(PGID)為:1607,設定nice值為-8:

[[email protected] ~]# renice  -n -8 -g 1607

二、ionice

linux預設IO排程器使用CFQ排程演算法,支援用ionice命令為程式指定io排程策略和優先順序,IO排程策略分為三種:

  • Idle :其他程序沒有磁碟IO時,才進行磁碟IO
  • Best Effort:預設排程策略,可以設定0-7的優先順序,數值越小優先順序越高,同優先順序的程序採用round-robin演算法排程;
  • Real Time :立即訪問磁碟,無視其它程序IO
  • None 即Best Effort,程序未指定策略和優先順序時顯示為none,會使用依據cpu nice設定計算出優先順序

策略 :0 - none, 1 - Real Time, 2 - Best Effort, 3 - idle

使用idle策略:

ionice -c 3 -p 程序id

使用Real Time策略:

ionice -c 1  -p 程序id

使用Best Effort策略,並指定優先順序最低:

ionice -c 2 -n 7 -p 程序id

三、同時限制cpu和磁碟io的優先順序
為了對生產環境造成影響最小,設定備份指令碼執行時,cpu和磁碟io的優先順序都最低:

nice -n 19 ionice -c2 -n7  /bin/sh /opt/backup.sh

相關推薦

linux的cpu磁碟io優先順序設定

Original url:https://www.52os.net/articles/reduce-cpu-io-priority.html在伺服器上常常會執行一些備份指令碼,當備份的檔案比較多時,會佔用大量的cpu和磁碟io。為了不影響生產業務,應儘量減少這些指令碼執行時使

Scrapy框架 資料同時存到mysql 本地磁碟優先順序設定

在管道檔案內編寫 pipelines管道檔案 另外寫一個類來處理儲存 # 儲存方式1 class QiubaiproPipeline(object): # 對提交的item物件,mysql資料庫儲存 # 爬蟲每次提交item,該方法被執行一次

linux CPU隔離程序排程優先順序設定

CPU隔離和程序排程優先順序設定的相關知識: 1.  uboot 啟動引數中增加 ”isolcpus=1“  , 計數從0開始      表示隔離第2個CPU, 系統啟動後,程式不能在第2個CPU上執行。      如果要使用隔離的CPU,需要在程式碼中新增如下程式碼。

作業系統(6)--IO管理磁碟排程學習筆記

IO緩衝:在輸入請求發出之前就開始執行輸入傳送,並且在輸出請求發出一段時間之後才開始執行輸出傳送,這項技術成為緩衝; 執行IO的裝置物件是: 1、塊裝置,可以隨機訪問,例如硬碟、快閃記憶體等; 2、流裝置,必須順序訪問,例如串列埠和鍵盤; 塊裝置中最小的可定址單位是扇區,一

磁碟io吞吐量

磁碟的 IOPS,也就是在一秒內,磁碟進行多少次 I/O 讀寫。 磁碟的吞吐量,也就是每秒磁碟 I/O 的流量,即磁碟寫入加上讀出的資料的大小。 IOPS 與吞吐量的關係每秒 I/O 吞吐量= IOPS* 平均 I/O SIZE。從公式可以看出: I/O SIZE 越大,IOPS 越高,那麼每秒 I/O

Hbase支援表分組優先順序設定

The HBase isolation and allocation tool is designed to help users manage cluster resource among dif

JavaSE(一) IO類層次關系各種IO流的用法總結

思想 單位 out 9.png 什麽 輸入流 謝謝 混亂 體系       今天把IO流的這一知點進行一下總結,因為在之前使用io流的時候,就只知道幾個重點常用的IO類,比如FileInputStream,BufferedInputStream(緩沖流)等等,但是不知道它處

【文件管理(硬鏈接與軟連接 ,ls, cp, ....)標準Io

linu -a 除了 錯誤輸出 最長 程序 指定 med 包括 文件管理:(1):文件系統文件系統從根目錄下開始,用“/”表示文件名是區分大小寫的以.開頭的文件為隱藏文件文件有兩類數據元數據:metadata數據:data(2):文件名規則文件名最長225個字節藍色----

blockingnon-blocking的區別 synchronous IOasynchronous IO的區別

nbsp 圖片 opera request multipl 並且 cal .com 但是 總結 blocking和non-blocking的區別 調用blocking IO會一直block住對應的進程直到操作完成,而non-blocking IO在kernel還準備數據的情

Linux之磁碟分割槽磁碟掛載

一、分割槽基礎知識 1、分割槽的方式: 1) mbr分割槽: 1.最多支援四個主分割槽 2.系統只能安裝在主分割槽 3.擴充套件分割槽要佔一個主分割槽 4.MBR最大隻支援2TB,但擁有最好的相容性 2) gtp分割槽: 1.支援

linux調優:按照CPU、記憶體、磁碟IO、網路效能監測

系統優化是一項複雜、繁瑣、長期的工作,優化前需要監測、採集、測試、評估,優化後也需要測試、採集、評估、監測,而且是一個長期和持續的過程,不 是說現在優化了,測試了,以後就可以一勞永逸了,也不是說書本上的優化就適合眼下正在執行的系統,不同的系統、不同的硬體、不同的應用優化的重點也不同、 優化的

KVM總結-KVM效能優化之磁碟IO優化

前面講了KVM CPU(http://blog.csdn.net/dylloveyou/article/details/71169463)、記憶體(http://blog.csdn.net/dylloveyou/article/details/71338378)的優化,下面接著第三塊的內容,KVM磁

Ubuntu16下檢視CPU、記憶體磁碟相關資訊

1.記憶體 檢視記憶體#free -m total used free shared buff/cache available Mem: 96685 986 94887

yarn資源管理優先順序設定

作業提交到的佇列:mapreduce.job.queuename 作業優先順序:mapreduce.job.priority,優先順序預設有5個:LOW VERY_LOW NORMAL(預設) HIGH VERY_HIGH 1、靜態設定 1.1

1024_(即時通訊)使用node.jssocket.io實現多人聊天室

使用node.js和socket.io實現多人聊天室 2015年01月24日 03:24:54 遠古大猛獁 閱讀數:2775 轉自: http://www.cnblogs.com/flyoung2008/archive/2012/07/19/2600132.html

java檔案io二進位制io

這學期開的演算法課,要用到檔案io操作,索性看了一下,下面就我的理解來介紹一下。 因為有關檔案,有必要說一下絕對檔名(absolute file name)和相對檔名 。 絕對檔名是由檔名和其完整路徑以及驅動器字母組成。例如:c:\book\Welcome.java 而Welcome.j

虛擬機器UbuntuWindows共享檔案設定(二)

一、點選虛擬機器->設定,出現介面如圖所示: 二、點選選項->共享資料夾->總是啟用,出現介面如圖所示: 三、在Windows自己喜歡的一個路徑下建一個share資料夾,我的如圖所以: 四、設定共享目錄並點選確定 五、/mnt

專業的談談0~255,16~235的產生歷史及合理設定,專業叫法Y/C伸張壓縮

電視機產生的歷史比PC顯示器悠久,這是人都該知道的。TV的誕生伴隨著時代的侷限性,首先是黑白電視機誕生的最早,為了討好黑白電視機使用者,彩色電視機必須相容黑白電視機,注意:誕生彩色電視機的時候,全地球公民都在用黑白電視機,你敢和他們對抗?全部拋棄黑白電視機使用者?P.S. QQ好像也是這麼

C/C++網路程式設計在windowslinux中將socket設定為阻塞非阻塞

C/C++網路程式設計在windows和linux中將socket設定為阻塞和非阻塞              在 socket程式設計中,對於socket的讀寫預設都是阻塞的,但有的情況我們需要將其設定為非阻塞,比如做多

Linux伺服器記憶體、CPU、檔案系統、磁碟IO效能以及網路連通性shell巡檢

shell自動巡檢伺服器基礎配置          每個專案都要部署在伺服器上,那麼伺服器的安全效能和一些基本情況是我們需要了解的,比如伺服器CPU、記憶體、檔案系統、磁碟IO、還有一些網路連通性