Linux PSI-----Pressure Stall information

PSI——壓力阻塞信息

當CPU、memory或IO設備處于競爭狀態,業務負載會遭受時延毛刺、吞吐量降低,
及面臨OOM的風險。

如果沒有一種準確的方法度量系統競爭程度,則有兩種后果:一種是用戶過于節制,
未充分利用系統資源;另一種是過度使用,經常性面臨業務中斷的風險。

psi特性能夠識別和量化資源競爭導致的業務中斷,及其對復雜負載乃至整個系統在
時間上的影響。

準確度量因資源不足造成的生產力損失,有助于用戶基于硬件調整業務負載,或基
于業務負載配置硬件。

psi能夠實時的提供相關信息,因此系統可基于psi實現動態的負載管理。如實施
卸載、遷移、策略性的停止或殺死低優先級或可重啟的批處理任務。

psi幫助用戶實現硬件資源利用率的最大化。同時無需犧牲業務負載健康度,也無需
面臨OOM等造成業務中斷的風險。

壓力接口

壓力信息可通過/proc/pressure/ --cpu、memory、io文件分別獲取。

CPU相關信息格式如下:

    some avg10=0.00 avg60=0.00 avg300=0.00 total=0

內存和IO相關信息如下:

    some avg10=0.00 avg60=0.00 avg300=0.00 total=0full avg10=0.00 avg60=0.00 avg300=0.00 total=0

some行代表至少有一個任務阻塞于特定資源的時間占比。

full行代表所有非idle任務同時阻塞于特定資源的時間占比。在這種狀態下CPU資源
完全被浪費,相對于正常運行,業務負載由于耗費更多時間等待而受到嚴重影響。

由于此情況嚴重影響系統性能,因此清楚的識別本情況并與some行所代表的情況區分開,
將有助于分析及提升系統性能。這就是full獨立于some行的原因。

avg代表阻塞時間占比(百分比),為最近10秒、60秒、300秒內的均值。這樣我們
既可觀察到短期事件的影響,也可看到中等及長時間內的趨勢。total代表總阻塞
時間(單位微秒),可用于觀察時延毛刺,這種毛刺可能在均值中無法體現。

監控壓力門限

用戶可注冊觸發器,通過poll()監控資源壓力是否超過門限。

觸發器定義:指定時間窗口期內累積阻塞時間的最大值。比如可定義500ms內積累
100ms阻塞,即觸發一次喚醒事件。

觸發器注冊方法:用戶打開代表特定資源的psi接口文件,寫入門限、時間窗口的值。
所打開的文件描述符用于等待事件,可使用select()、poll()、epoll()。
寫入信息的格式如下:

    <some|full> <stall amount in us> <time window in us>

示例:向/proc/pressure/memory寫入"some 150000 1000000"將新增觸發器,將在
1秒內至少一個任務阻塞于內存的總時間超過150ms時觸發。向/proc/pressure/io寫入
"full 50000 1000000"將新增觸發器,將在1秒內所有任務都阻塞于io的總時間超過50ms時觸發。

觸發器可針對多個psi度量值設置,同一個psi度量值可設置多個觸發器。每個觸發器需要
單獨的文件描述符用于輪詢,以區分于其他觸發器。所以即使對于同一個psi接口文件,
每個觸發器也需要單獨的調用open()。

監控器在被監控資源進入阻塞狀態時啟動,在系統退出阻塞狀態后停用。系統進入阻塞
狀態后,監控psi增長的頻率為每監控窗口刷新10次。

內核接受的窗口為500ms10s,所以監控間隔為50ms1s。設置窗口下限目的是為了
防止過于頻繁的輪詢。設置窗口上限的目的是因為窗口過長則無意義,此時查看
psi接口提供的均值即可。

監控器在激活后,至少在跟蹤窗口期間將保持活動狀態。以避免隨著系統進入和退出
阻塞狀態,監控器過于頻繁的進入和退出活動狀態。

用戶態通知在監控窗口內會受到速率限制。當對應的文件描述符關閉,觸發器會自動注銷。

用戶態監控器使用示例

::

#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <poll.h>
#include <string.h>
#include <unistd.h>

/* 監控內存部分阻塞,監控時間窗口為1秒、阻塞門限為150毫秒。*/
int main() {
const char trig[] = “some 150000 1000000”;
struct pollfd fds;
int n;

    fds.fd = open("/proc/pressure/memory", O_RDWR | O_NONBLOCK);if (fds.fd < 0) {printf("/proc/pressure/memory open error: %s\n",strerror(errno));return 1;}fds.events = POLLPRI;if (write(fds.fd, trig, strlen(trig) + 1) < 0) {printf("/proc/pressure/memory write error: %s\n",strerror(errno));return 1;}printf("waiting for events...\n");while (1) {n = poll(&fds, 1, -1);if (n < 0) {printf("poll error: %s\n", strerror(errno));return 1;}if (fds.revents & POLLERR) {printf("got POLLERR, event source is gone\n");return 0;}if (fds.revents & POLLPRI) {printf("event triggered!\n");} else {printf("unknown event received: 0x%x\n", fds.revents);return 1;}}return 0;

}

Cgroup2接口

對于CONFIG_CGROUP=y及掛載了cgroup2文件系統的系統,能夠獲取cgroups內任務的psi。
此場景下cgroupfs掛載點的子目錄包含cpu.pressure、memory.pressure、io.pressure文件,
內容格式與/proc/pressure/下的文件相同。

可設置基于cgroup的psi監控器,方法與系統級psi監控器相同。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212973.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212973.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212973.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mybatis與Spring結合深探——MapperFactoryBean的奧秘

文章目錄 前言MapperFactoryBean的工作原理底層實現剖析MapperFactoryBean的checkDaoConfig()方法總結 MapperFactoryBean的getObject()方法 思考聯想后續 系列相關相關文章究竟FactoryBean是什么&#xff1f;深入理解Spring的工廠神器超硬核解析Mybatis動態代理原理&#xff0…

lv12 開發板啟動過程

1 開發板啟動過程 1.1 回顧芯片手冊第三章內存映射 對于arm來說&#xff0c;不是給它多大的內存都能讀。尋址空間&#xff08;地址空間&#xff09;讀寫范圍是有限的&#xff0c;尋址空間的大小與地址總線寬度有關&#xff0c;如32位&#xff0c;地址空間4G&#xff08;2^32)…

NVMe over Fabrics with SPDK with iRDMA總結 - 3

6.0 Configure and Test NVMe over Fabrics Host(s) to Connect to SPDK Target配置和測試 NVMe over Fabrics 主機以連接 SPDK 目標機 The SPDK NVMe-oF target system is spec compliant, which allows for the use of either an SPDK host or Linux Kernel host to co…

【C語言基礎】嵌入式面試經典題(C語言篇)----有新的內容會及時補充、更新!

&#x1f4e2;&#xff1a;如果你也對機器人、人工智能感興趣&#xff0c;看來我們志同道合? &#x1f4e2;&#xff1a;不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸對你有幫助&#xff0c;可點贊 &#x1f44d;…

Mac虛擬機CrossOver23破解版下載和許可證下載

CrossOver Mac Mac 和 Windows 系統之間的兼容工具。使 Mac 操作系統的用戶可以運行 Windows 系統的應用&#xff0c;從辦公軟件、實用工具、游戲到設計軟件&#xff0c; 您都可以在 Mac 程序和 Windows 程序之間隨意切換。 系統要求 運行macOS的基于Intel或Apple Silicon 的…

springboot項目加載配置文件失敗

問題 在使用springboot打成jar以后&#xff0c;需要文件加載一個redisson-cluster的配置文件。配置文件是在jar的同級目錄。啟動時卻總是加載jar中的配置文件&#xff0c;而外部配置文件卻不加載看下配置&#xff1a;spring:redis:redisson:# redis配置位置file: classpath:red…

lcx iptables rinetd 三個端口轉發流量分析

lcx流量分析 環境搭建 本機 &#xff1a;192.168.0.52 win7 &#xff1a; 192.168.0.247 10.0.0.3 win10&#xff1a; 10.0.0.10 win7 Lcx.exe -listen 7777 4444win10 Lcx.exe -slave 10.0.0.3 7777 127.0.0.1 3389然后使用遠程軟件連接 連的是192.168.0.247的4444 端口 …

基于Pytorch框架深度學的垃圾分類智能識別系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 垃圾分類智能識別系統是一種基于深度學習技術的智能系統&#xff0c;用于對垃圾進行分類和識別。它使用Pytorch框架…

【電路筆記】-壓敏電阻

壓敏電阻 文章目錄 壓敏電阻1、概述2、交流波形瞬變3、抗靜電能力4、特性曲線5、壓敏電阻電容值6、金屬氧化物壓敏電阻7、壓敏電阻應用8、總結 壓敏電阻是一種無源兩端固態半導體器件&#xff0c;用于為電氣和電子電路提供保護。 1、概述 與提供過電流保護的保險絲或斷路器不同…

Redis高效恢復策略:內存快照與AOF

第1章&#xff1a;Redis宕機恢復的重要性和挑戰 大家好&#xff0c;我是小黑。今天咱們來聊聊Redis宕機后的恢復策略。想象一下&#xff0c;你的網站突然宕機了&#xff0c;所有的數據都飄了&#xff0c;這種情況下&#xff0c;快速恢復數據就顯得尤為重要。Redis作為一個高性…

Python---自定義模塊

1、什么是自定義模塊 在Python中&#xff0c;模塊一共可以分為兩大類&#xff1a;內置系統模塊 和 自定義模塊 模塊的本質&#xff1a;在Python中&#xff0c;模塊的本質就是一個Python的獨立文件&#xff08;后綴名.py&#xff09;&#xff0c;里面可以包含全局變量、函數以…

大廠算法指南:優選算法 ——雙指針篇(下)

大廠算法指南&#xff1a;優選算法 ——雙指針篇&#xff08;上&#xff09; 前言&#xff1a;雙指針簡介一、[611. 有效三角形的個數](https://leetcode.cn/problems/valid-triangle-number/)1.1 算法思路&#xff08;排序 雙指針&#xff09;1.2 代碼實現 二、[LCR 179. 查找…

[GPT]Andrej Karpathy微軟Build大會GPT演講(下)--該如何使用GPT助手

該如何使用GPT助手--將GPT助手模型應用于問題 現在我要換個方向,讓我們看看如何最好地將 GPT 助手模型應用于您的問題。 現在我想在一個具體示例的場景里展示。讓我們在這里使用一個具體示例。 假設你正在寫一篇文章或一篇博客文章,你打算在最后寫這句話。 加州的人口是阿拉…

佳明(Garmin) fēnix 7X 增加小睡檢測功能

文章目錄 &#xff08;一&#xff09;零星小睡&#xff08;二&#xff09;小睡檢測&#xff08;三&#xff09;吐槽佳明&#xff08;3.1&#xff09;心率檢測&#xff08;3.2&#xff09;光線感應器&#xff08;3.3&#xff09;手表重量&#xff08;3.4&#xff09;手表續航 &a…

保姆級 | XSS Platform環境搭建

0x00 前言 XSS Platform 平臺主要是用作驗證跨站腳本攻擊。該平臺可以部署在本地或服務器環境中。我們可以使用 XSS Platfrom 平臺搭建、學習或驗證各種類型的 XSS 漏洞。 0x01 環境說明 HECS(云耀云服務器)xss platformUbuntu 22.04Nginx 1.24.0MySQL 5.6.51Pure-Ftpd 1.0.49…

最新接口自動化測試面試題

前言 前面總結了一篇關于接口測試的常規面試題&#xff0c;現在接口自動化測試用的比較多&#xff0c;也是被很多公司看好。那么想做接口自動化測試需要具備哪些能力呢&#xff1f; 也就是面試的過程中&#xff0c;面試官會考哪些問題&#xff0c;知道你是不是真的做過接口自…

大數據面試總結 二

1、事實表主要分成幾種&#xff1a; 1、事務事實表&#xff1a;又稱作原子事實表&#xff0c;主要是用來描述業務過程&#xff0c;跟蹤控件或者時間上某點的度量事件&#xff0c;保存的是最原子的數據 2、周期事實表&#xff1a;以一個周期作為一個時間間隔&#xff0c;用來記…

2021版吳恩達深度學習課程Deeplearning.ai 05序列模型 12.5

學習內容 05.序列模型 1.1 為什么用序列模型 1.序列模型常見的應用 1.2 注釋 notation 1.*T_x(i)表示訓練樣本x(i)的序列長度&#xff0c;T_y(i)表示target(i)的序列長度2.訓練集表示單詞的方式*構建字典的方式*在訓練集中查找出現頻率最高的單詞*網絡搜集常用字典3.如果遇…

【C語言快速學習基礎篇】之一基礎類型、進制轉換、數據位寬

文章目錄 一、基礎類型(根據系統不同占用字節數會有變化)1.1、有符號整形1.2、無符號整形1.3、字符型1.4、浮點型1.5、布爾型 二、進制轉換2.1、二進制2.2、八進制2.3、十進制2.4、十六進制2.5、N進制2.6、進制轉換關系對應表 三、數據位寬3.1、位3.2、字節3.3、字3.4、雙字3.5…

程序員常用英文單詞

英語對于程序員來說多么重要應該無需過多解釋了&#xff0c;把近期在網上收集到的分享到這里供大家學習交流。 PS&#xff1a;感謝原作者的收集&#xff0c;謝謝。 A abstract 抽象的 abstract base class (ABC) 抽象基類abstract class 抽象類 abstraction 抽象、抽象物、抽象…