国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux服務器中taskstats應用

2024-08-27 23:59:57
字體:
來源:轉載
供稿:網友

在Linux中,通過taskstats能過獲得per-task或者per-process的統計數據,這樣我們可以通過taskstats監控服務器的I/O.

了解taskstats的最初目的,是為了監控服務器的IO,防止jmeter因為受壓機異常,打印大量日志,把磁盤空間用光,后來發現,由于服務器內核版本比較低(2.6.19),所以沒法直接通過讀取proc里面的IO來獲取進程IO,但是也同樣是因為內核版本太低,taskstats結構中,也比新內核少了磁盤寫入和讀取的統計,只能獲取到磁盤延遲寫入塊數,所以還沒有實戰過.

關于taskstats,內核文檔有非常詳細的文檔和示例代碼,見:http://www.kernel.org/doc/Documentation/accounting/

首先說下taskstats結構,按張文檔的說法“Taskstats is a netlink-based interface for sending per-task and per-process statistics from the kernel to userspace.”注意這里說明了,通過taskstats能過獲得per-task或者per-process的統計數據,也就是內核的所謂pid和tgid的概念.

taskstats的優勢在于:

  1. efficiently provide statistics during lifetime of a task and on its exit 
  2. unified interface for multiple accounting subsystems --Vevb.com
  3. extensibility for use by future accounting patches 

第一點比較有用,可以注冊一個進程,當進程推出的時候收到taskstats消息,其他沒用到.

taskstats通過netlink和內核進行交互,也就是說交互是異步的,在創建了netlink的fd之后,所有的操作和普通的socket也差不多了,就是需要根據netlink判斷狀態,并且取出真正的payload,也就是taskstats結構。

taskstats的結構在linux/taskstats.h文件中可以看見,里面有幾個比較有用的成員,如:

cpu_count、cpu_delay_total,blkio_count、blkio_delay_total,swapin_count、swapin_delay_total。通過注釋可以大概了解到,xxx_count is the number of delay values recorded,xxx_delay_total is the corresponding cumulative delay in nanoseconds,這樣就能算出delay的量,大概需要多少時間能夠消耗完,從側面可以了解負載情況。我現在在使用的內核,還有很多IO統計的數據,但是2.6.19的內核不支持,就沒辦法使用了。

具體的使用,內核文檔的getdelays.c已經很詳細、很通用了,我參照這個,寫了個比較簡單的.

首先,是創建netlink連接,直接使用里面的create_nl_socket函數就好了,和創建普通socket差不多,只是類型上的區別,前面已經提到,taskstats使用的是NETLINK_GENERIC方式創建的netlink,然后就是發送netlink數據包給內核,具體的發送方式send_cmd函數已經進行了封裝,通過枚舉TASKSTATS_CMD_ATTR_TGID和TASKSTATS_CMD_ATTR_PID,可以獲取對應的pid或者tgid的數據了.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉禾县| 台中市| 柳河县| 封开县| 莒南县| 天峻县| 石首市| 庆安县| 盐亭县| 宿松县| 浪卡子县| 繁昌县| 府谷县| 安阳市| 卫辉市| 绥棱县| 儋州市| 黄陵县| 阿勒泰市| 寿光市| 三都| 封开县| 叶城县| 栾川县| 清水河县| 东光县| 阳朔县| 石家庄市| 青川县| 定日县| 章丘市| 渝北区| 海南省| 当阳市| 红桥区| 江都市| 丹巴县| 商城县| 大关县| 乌鲁木齐县| 锡林浩特市|