首頁 >系統教程 >Linux >系統流程:10個維運人員必須熟悉的知識點

系統流程:10個維運人員必須熟悉的知識點

WBOY
WBOY轉載
2024-01-05 17:24:201235瀏覽
導讀 在日常的維運工作中,當我們習慣性的執行ps指令後會看到很多「奇奇怪怪」的進程,而這些進程大部門都是系統的核心進程。很多同學對之了解的甚少,因此今天就為大家整理一篇入門級的系統進程介紹帖,希望能夠幫助大家對操作系統進程的理解。

在日常的維運工作中,當我們習慣性的執行ps指令後會看到很多「奇奇怪怪」的進程,而這些進程大部門都是系統的核心進程。很多同學對之了解的甚少,因此今天就為大家整理一篇入門級的系統進程介紹帖,希望能夠幫助大家對操作系統進程的理解。
系統流程:10個維運人員必須熟悉的知識點

前言

在日常維運工作中,常常會看到一些奇怪的系統流程佔用資源比較高。而且總是會聽到業務線同學詢問「xxx這個是啥進程啊?咋開啟了這麼多?」

而這些系統級的核心程序都是會用中括號括起來的,它們會執行一些系統的輔助功能(如將緩存寫入磁碟);無括號的進程都是用戶們執行的進程(如php、nginx等)。

如下圖所示:
系統流程:10個維運人員必須熟悉的知識點
以下就為大家普及10個比較常見的系統進程:
kswapd0
kjournald
pdflush
kthreadd
migration
watchdog
events
kblockd
aio
rpciod

kswapd0

系統每過一段時間就會喚醒kswapd,看看內存是否緊張,如果不緊張,則睡眠,在kswapd中,有2個閥值,pages_hige和pages_low,當空閒內存頁的數量低於pages_low的時候,kswapd進程就會掃描記憶體並且每次釋放出32個free pages,直到free page的數量到達pages_high.

Linux uses kswapd for virtual memory management such that pages that have been recently accessed are kept in memory and less active pages are paged out to disk.(what is a page?)…Linuxuse So manages moryd pages.(what) pages?)…Linux So manages. ,the kswapd process regularly decreases the ages of unreferenced pages…and at the end they are paged out(moved out) to disk

kjournald

journal:記錄所有檔案系統上的元資料改變,最慢的一種模式。

logs all filesystem data and metadata changes. The slowest of the three ext3 journaling modes, this journaling mode minimizes the chance of losing the changes you have made to any file in an ext3 filesystem.

##ordered:預設使用的模式,只記錄檔案系統改變的元數據,並在改變之前記錄日誌。

only logs changes to filesystem metadata, but flushes file data updates to disk before making changes to associated filesystem metadata. This is the default ext3 journaling mode.

writeback :最快的一種模式,同樣只記錄修改過的元資料,依賴標準檔案系統寫進程將資料寫到硬碟

only logs changes to filesystem metadata but relies on the standard filesystem write process to write file data changes to disk. This is the fastest ext3 journaling mode.

#pdflush pdflush用於將記憶體中的內容和檔案系統進行同步。

例如:當一個檔案在記憶體中進行修改,pdflush負責將它寫回硬碟。每當記憶體中的垃圾頁面(dirty page)超過10%的時候,pdflush就會將這些頁面備份回硬碟。這個比率是可調節的,透過/etc/sysctl.conf中的 vm.dirty_background_ratio項預設值為10也可以。

kthreadd 這種核心執行緒只有一個,它的作用是管理調度其它的核心執行緒。

它在核心初始化的時候被創建,會循環運行一個叫做kthreadd的函數,該函數的作用是運行kthread_create_list全域鍊錶中維護的kthread。可以呼叫kthread_create建立一個kthread,它會被加入到kthread_create_list鍊錶中,同時kthread_create會weak up kthreadd_task。 kthreadd在執行kthread會呼叫舊的介面-kernel_thread執行一個名叫「kthread」的核心執行緒去執行建立的kthread,被執行過的kthread會從kthread_create_list鍊錶中刪除,而kthreadd會不斷呼叫CPUeduler 讓出CPU。這個線程不能關閉。

migration 這種核心線程共有32個,從migration/0到migration/31,每個處理器核對應一個migration核心線程,主要作用是作為相應CPU核的遷移進程,用來執行進程遷移操作,內核中的函數是migration_thread()

屬於2.6核心的負載平衡系統,該進程在系統啟動時自動載入(每個cpu 一個),並將自己設為SCHED_FIFO 的即時進程,然後檢查runqueue::migration_queue 中是否有請求等待處理,如果沒有,就在TASK_INTERRUPTIBLE 中休眠,直到被喚醒後再次檢查。 migration_thread() 只是一個 CPU 綁定以及 CPU 電源管理等功能的一個介面。這個執行緒是調度系統的重要組成部分。

watchdog

這種核心執行緒共有32個,從watchdog/0到watchdog/31, 每個處理器核對應一個watchdog 核心線程,watchdog用於監視系統的運行,在系統出現故障時自動重新啟動系統,包括一個核心watchdog module 和一個用戶空間的watchdog 程式。

在Linux 核心下, watchdog的基本工作原理是:當watchdog啟動後(即/dev/watchdog設備被打開後),如果在某一設定的時間間隔(1分鐘)內/dev/watchdog沒有被執行寫入操作, 硬體watchdog電路或軟體定時器就會重新啟動系統,每次寫入操作都會導致重新設定計時器。

events

這種核心執行緒共有32個,從events/0到events/31, 每個處理器核心對應一個 events核心執行緒。用來處理核心事件很多軟硬體事件(例如斷電,檔案變更)被轉換為events,並分發給對對應事件感興趣的執行緒進行回應。

kblockd

這種核心執行緒共有32個,從kblockd/0到kblockd/31, 每個處理器核心對應一個 kblockd 核心執行緒。用於管理系統的區塊設備,它會週期地啟動系統內的區塊設備驅動。如果擁有區塊設備,那麼這些執行緒就不能被去掉。

aio

這種核心執行緒共有32個,從aio/0到aio/31, 每個處理器核心對應一個aio 核心執行緒, 取代使用者行程管理I/O,用以支援使用者態的AIO(非同步I/ O),不應該被關閉。

rpciod

這種核心執行緒共有32個,從rpciod/0到rpciod/31, 每個處理器核對應一個rpciod核心執行緒,主要作用是作為遠過程呼叫服務的守護進程,用於從客戶端啟動I /O服務,通常啟動NFS服務時要用到它。

總結

進程是作業系統上非常重要的概念,所有系統上面跑的資料都會以進程的型別存在。在 Linux 系統當中:觸發任何一個事件時,系統都會將它定義為一個進程,所以,進程是Linux程式的唯一的實作方式。

以上是系統流程:10個維運人員必須熟悉的知識點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除