運維人員必須知道的十個系統(tǒng)進程
作者:對抗一下
kswapd0系統(tǒng)定時喚醒kswapd,檢查內(nèi)存是否緊張,如果不緊張,則睡眠,在kswapd中,有2個閥值:pages_hige,pages_low,空閑內(nèi)存頁數(shù)量低于pages_low的時,kswapd進程會掃描內(nèi)存并且每次釋放出32個free pages,直到free page的數(shù)量到達pages_high標準。
前言
在日常運維工作中,經(jīng)常會看到一些奇怪的系統(tǒng)進程占用資源比較高,但是又不敢隨意的Kill這些進程
而這些系統(tǒng)級的內(nèi)核進程都是會用中括號括起來的,它們會執(zhí)行一些系統(tǒng)的輔助功能(如將緩存寫入磁盤);
無括號的進程都是用戶們執(zhí)行的進程(如java、nginx等)
如下圖所示:
圖片
- kswapd0系統(tǒng)定時喚醒kswapd,檢查內(nèi)存是否緊張,如果不緊張,則睡眠,在kswapd中,有2個閥值:pages_hige,pages_low,空閑內(nèi)存頁數(shù)量低于pages_low的時,kswapd進程會掃描內(nèi)存并且每次釋放出32個free pages,直到free page的數(shù)量到達pages_high標準
- kjournaldkjournald有三種模式,分別是journal,ordered,和writebackjournal:最慢的一種模式,主要記錄所有文件系統(tǒng)上的元數(shù)據(jù)改變ordered:默認使用的模式,只記錄文件系統(tǒng)改變的元數(shù)據(jù),并且是在改變前記錄日志writeback :最快的一種模式,同樣只記錄修改過的元數(shù)據(jù),依賴標準文件系統(tǒng)寫進程將數(shù)據(jù)寫到硬盤
- pdflush主要用于將內(nèi)存中的內(nèi)容和文件系統(tǒng)進行同步。比如說:當(dāng)一個文件在內(nèi)存中進行修改,pdflush負責(zé)將它寫回硬盤。每當(dāng)內(nèi)存中的垃圾頁(dirty page)超過10%的時候,pdflush就會將這些頁面?zhèn)浞莼赜脖P。此比率通過通過/etc/sysctl.conf中的 vm.dirty_background_ratio項默認值為10
- kthreadd內(nèi)核初始化的時候被創(chuàng)建的一個內(nèi)核線程,其作用是管理調(diào)度其它內(nèi)核線程。它會循環(huán)運行一個叫做kthreadd的函數(shù),該函數(shù)的作用是運行kthread_create_list全局鏈表中維護的kthread,然后可以調(diào)用kthread_create創(chuàng)建一個kthread,它會被加入到kthread_create_list鏈表中,同時kthread_create會weak up kthreadd_task
注意:這個線程不能關(guān)閉?。?!
- migrationmigration/0-migration/31共有32個內(nèi)核現(xiàn)場,每個處理器核對應(yīng)一個migration內(nèi)核線程,主要作為相應(yīng)CPU核的遷移進程,用來執(zhí)行進程遷移操作,內(nèi)核中的函數(shù)是migration_thread();該進程在系統(tǒng)啟動時自動加載(每個 cpu 一個),并將自己設(shè)為 SCHED_FIFO 的實時進程,然后檢查 runqueue::migration_queue 中是否有請求等待處理,如果沒有,就在 TASK_INTERRUPTIBLE 中休眠,直到被喚醒后再次檢查。migration_thread() 僅僅是一個 CPU 綁定以及 CPU 電源管理等功能的一個接口。這個線程是調(diào)度系統(tǒng)的重要組成部分。
- watchdogwatchdog/0-watchdog/31總共32個內(nèi)核線程, 每個處理器核心對應(yīng)一個watchdog 內(nèi)核線程,主要用于監(jiān)視系統(tǒng)的運行,在系統(tǒng)出現(xiàn)故障時自動重新啟動系統(tǒng),包括一個內(nèi)核 watchdog module 和一個用戶空間的 watchdog 程序。其基本工作原理是:當(dāng)watchdog啟動后(即/dev/watchdog設(shè)備被打開后),如果在某個時間間隔(1分鐘)內(nèi)/dev/watchdog沒有被執(zhí)行寫操作, 硬件watchdog電路或軟件定時器就會重新啟動系統(tǒng),每次寫操作會導(dǎo)致重新設(shè)定定時器。
- eventsevents/0-events/31, 總共32個內(nèi)核線程,每個處理器核對應(yīng)一個 events內(nèi)核線程。主要用作處理內(nèi)核事件很多軟硬件事件(比如斷電,文件變更)被轉(zhuǎn)換為events,并分發(fā)給對相應(yīng)事件感興趣的線程進行響應(yīng)。
- kblockdkblockd/0-kblockd/31, 總共32個內(nèi)核線程 ,每個處理器核對應(yīng)一個 kblockd 內(nèi)核線程,用于管理系統(tǒng)的塊設(shè)備,它會周期性的激活系統(tǒng)內(nèi)的塊設(shè)備驅(qū)動
- aioaio/0-aio/31, , 總共32個內(nèi)核線程,每個處理器核對應(yīng)一個 aio 內(nèi)核線程, 代替用戶進程管理I/O,用以支持用戶態(tài)的AIO(異步I/O)注意:此線程不應(yīng)該被關(guān)閉。
- rpciodrpciod/0-rpciod/31, 總共32個內(nèi)核線程, 每個處理器核對應(yīng)一個rpciod內(nèi)核線程,主要作為遠程調(diào)用服務(wù)(如NFS)的守護進程,用于從客戶端啟動I/O服務(wù)
責(zé)任編輯:武曉燕
來源:
步步運維步步坑