日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

13 | 答疑(一):无法模拟出 RES 中断的问题,怎么办?

發布時間:2024/9/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 13 | 答疑(一):无法模拟出 RES 中断的问题,怎么办? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題 1:性能工具版本太低,導致指標不全

這是使用 CentOS 的同學普遍碰到的問題。在文章中,我的 pidstat 輸出里有一個 %wait 指標,代表進程等待 CPU 的時間百分比,這是 systat 11.5.5 版本才引入的新指標,舊版本沒有這一項。而 CentOS 軟件庫里的 sysstat 版本剛好比這個低,所以沒有這項指標。不過,你也不用擔心。前面我就強調過,工具只是查找分析的手段,指標才是我們重點分析的對象。如果你的 pidstat 里沒有顯示,自然還有其他手段能找到這個指標。比如說,在講解系統原理和性能工具時,我一般會介紹一些 proc 文件系統的知識,教你看懂 proc 文件系統提供的各項指標。之所以這么做,一方面,當然是為了讓你更直觀地理解系統的工作原理;另一方面,其實是想給你展示,性能工具上能看到的各項性能指標的原始數據來源。這樣,在實際生產環境中,即使你很可能需要運行老版本的操作系統,還沒有權限安裝新的軟件包,你也可以查看 proc 文件系統,獲取自己想要的指標。但是,性能分析的學習,我還是建議你要用最新的性能工具來學。新工具有更全面的指標,讓你更容易上手分析。這個絕對的優勢,可以讓你更直觀地得到想要的數據,也不容易讓你打退堂鼓。當然,初學時,你最好試著去理解性能工具的原理,或者熟悉了使用方法后,再回過頭重新學習原理。這樣,即使是在無法安裝新工具的環境中,你仍然可以從 proc 文件系統或者其他地方,獲得同樣的指標,進行有效的分析。

問題 2:使用 stress 命令,無法模擬 iowait 高的場景

使用 stress 無法模擬 iowait 升高,但是卻看到了 sys 升高。這是因為案例中 的 stress -i 參數,它表示通過系統調用 sync() 來模擬 I/O 的問題,但這種方法實際上并不可靠。因為 sync() 的本意是刷新內存緩沖區的數據到磁盤中,以確保同步。如果緩沖區內本來就沒多少數據,那讀寫到磁盤中的數據也就不多,也就沒法產生 I/O 壓力。這一點,在使用 SSD 磁盤的環境中尤為明顯,很可能你的 iowait 總是 0,卻單純因為大量的系統調用,導致了系統 CPU 使用率 sys 升高。這種情況,我在留言中也回復過,推薦使用 stress-ng 來代替 stress。擔心你沒有看到留言,所以這里我再強調一遍。你可以運行下面的命令,來模擬 iowait 的問題。# -i 的含義還是調用 sync,而—hdd 則表示讀寫臨時文件 $ stress-ng -i 1 --hdd 1 --timeout 600

問題 3:無法模擬出 RES 中斷的問題

這個問題是說,即使運行了大量的線程,也無法模擬出重調度中斷 RES 升高的問題。其實我在 CPU 上下文切換的案例中已經提到,重調度中斷是調度器用來分散任務到不同 CPU 的機制,也就是可以喚醒空閑狀態的 CPU ,來調度新任務運行,而這通常借助處理器間中斷(Inter-Processor Interrupts,IPI)來實現。所以,這個中斷在單核(只有一個邏輯 CPU)的機器上當然就沒有意義了,因為壓根兒就不會發生重調度的情況。不過,正如留言所說,上下文切換的問題依然存在,所以你會看到, cs(context switch)從幾百增加到十幾萬,同時 sysbench 線程的自愿上下文切換和非自愿上下文切換也都會大幅上升,特別是非自愿上下文切換,會上升到十幾萬。根據非自愿上下文的含義,我們都知道,這是過多的線程在爭搶 CPU。其實這個結論也可以從另一個角度獲得。比如,你可以在 pidstat 的選項中,加入 -u 和 -t 參數,輸出線程的 CPU 使用情況,你會看到下面的界面:$ pidstat -u -t 114:24:03 UID TGID TID %usr %system %guest %wait %CPU CPU Command 14:24:04 0 - 2472 0.99 8.91 0.00 77.23 9.90 0 |__sysbench 14:24:04 0 - 2473 0.99 8.91 0.00 68.32 9.90 0 |__sysbench 14:24:04 0 - 2474 0.99 7.92 0.00 75.25 8.91 0 |__sysbench 14:24:04 0 - 2475 2.97 6.93 0.00 70.30 9.90 0 |__sysbench 14:24:04 0 - 2476 2.97 6.93 0.00 68.32 9.90 0 |__sysbench ...從這個 pidstat 的輸出界面,你可以發現,每個 stress 線程的 %wait 高達 70%,而 CPU 使用率只有不到 10%。換句話說, stress 線程大部分時間都消耗在了等待 CPU 上,這也表明,確實是過多的線程在爭搶 CPU。在這里順便提一下,留言中很常見的一個錯誤。有些同學會拿 pidstat 中的 %wait 跟 top 中的 iowait% (縮寫為 wa)對比,其實這是沒有意義的,因為它們是完全不相關的兩個指標。pidstat 中, %wait 表示進程等待 CPU 的時間百分比。top 中 ,iowait% 則表示等待 I/O 的 CPU 時間百分比。回憶一下我們學過的進程狀態,你應該記得,等待 CPU 的進程已經在 CPU 的就緒隊列中,處于運行狀態;而等待 I/O 的進程則處于不可中斷狀態。另外,不同版本的 sysbench 運行參數也不是完全一樣的。比如,在案例 Ubuntu 18.04 中,運行 sysbench 的格式為:$ sysbench --threads=10 --max-time=300 threads run而在 Ubuntu 16.04 中,運行格式則為(感謝 Haku 留言分享的執行命令):$ sysbench --num-threads=10 --max-time=300 --test=threads run

問題 4:無法模擬出 I/O 性能瓶頸,以及 I/O 壓力過大的問題

這個問題可以看成是上一個問題的延伸,只是把 stress 命令換成了一個在容器中運行的 app 應用。事實上,在 I/O 瓶頸案例中,除了上面這個模擬不成功的留言,還有更多留言的內容剛好相反,說的是案例 I/O 壓力過大,導致自己的機器出各種問題,甚至連系統都沒響應了。之所以這樣,其實還是因為每個人的機器配置不同,既包括了 CPU 和內存配置的不同,更是因為磁盤的巨大差異。比如,機械磁盤(HDD)、低端固態磁盤(SSD)與高端固態磁盤相比,性能差異可能達到數倍到數十倍。其實,我自己所用的案例機器也只是低端的 SSD,比機械磁盤稍微好一些,但跟高端固態磁盤還是比不了的。所以,相同操作下,我的機器上剛好出現 I/O 瓶頸,但換成一臺使用機械磁盤的機器,可能磁盤 I/O 就被壓死了(表現為使用率長時間 100%),而換上好一些的 SSD 磁盤,可能又無法產生足夠的 I/O 壓力。另外,由于我在案例中只查找了 /dev/xvd 和 /dev/sd 前綴的磁盤,而沒有考慮到使用其他前綴磁盤(比如 /dev/nvme)的同學。如果你正好用的是其他前綴,你可能會碰到跟 Vicky 類似的問題,也就是 app 啟動后又很快退出,變成 exited 狀態。在這里,berryfl 同學提供了一個不錯的建議:可以在案例中增加一個參數指定塊設備,這樣有需要的同學就不用自己編譯和打包案例應用了。所以,在最新的案例中,我為 app 應用增加了三個選項。
  • -d 設置要讀取的磁盤,默認前綴為 /dev/sd 或者 /dev/xvd 的磁盤。
  • -s 設置每次讀取的數據量大小,單位為字節,默認為 67108864(也就是 64MB)。
  • -c 設置每個子進程讀取的次數,默認為 20 次,也就是說,讀取 20*64MB 數據后,子進程退出。
你可以點擊 Github 查看它的源碼,使用方法我寫在了這里:$ docker run --privileged --name=app -itd feisky/app:iowait /app -d /dev/sdb -s 67108864 -c 20案例運行后,你可以執行 docker logs 查看它的日志。正常情況下,你可以看到下面的輸出:$ docker logs app Reading data from disk /dev/sdb with buffer size 67108864 and count 20

問題 5:性能工具(如 vmstat)輸出中,第一行數據跟其他行差別巨大

這個問題主要是說,在執行 vmstat 時,第一行數據跟其他行相比較,數值相差特別大。我相信不少同學都注意到了這個現象,這里我簡單解釋一下。首先還是要記住,我總強調的那句話,在碰到直觀上解釋不了的現象時,要第一時間去查命令手冊。比如,運行 man vmstat 命令,你可以在手冊中發現下面這句話:The first report produced gives averages since the last reboot.? Additional reports give information on a sam‐?pling period of length delay.? The process and memory reports are instantaneous in either case.?也就是說,第一行數據是系統啟動以來的平均值,其他行才是你在運行 vmstat 命令時,設置的間隔時間的平均值。另外,進程和內存的報告內容都是即時數值。你看,這并不是什么不得了的事故,但如果我們不清楚這一點,很可能卡住我們的思維,阻止我們進一步的分析。這里我也不得不提一下,文檔的重要作用。授之以魚,不如授之以漁。我們專欄的學習核心,一定是教會你性能分析的原理和思路,性能工具只是我們的路徑和手段。所以,在提到各種性能工具時,我并沒有詳細解釋每個工具的各種命令行選項的作用,一方面是因為你很容易通過文檔查到這些,另一方面就是不同版本、不同系統中,個別選項的含義可能并不相同。所以,不管因為哪個因素,自己 man 一下,一定是最快速并且最準確的方式。特別是,當你發現某些工具的輸出不符合常識時,一定記住,第一時間查文檔弄明白。實在讀不懂文檔的話,再上網去搜,或者在專欄里向我提問。學習是一個“從薄到厚再變薄”的過程,我們從細節知識入手開始學習,積累到一定程度,需要整理成一個體系來記憶,這其中還要不斷地對這個體系進行細節修補。有疑問、有反思才可以達到最佳的學習效果。

總結

以上是生活随笔為你收集整理的13 | 答疑(一):无法模拟出 RES 中断的问题,怎么办?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久免费国产 | 蜜桃视频在线播放 | 亚洲涩涩网 | 天天爽夜夜 | 色婷久久 | 亚洲系列中文字幕 | 久久精品性爱视频 | 特级西西444www高清大胆 | 91精品又粗又猛又爽 | 亚洲aaaaaaa| 男插女视频网站 | 97超级碰碰人妻中文字幕 | 超碰在线日韩 | 国产成人+综合亚洲+天堂 | 男女午夜啪啪 | 免费中文字幕在线观看 | 波多野结衣免费在线视频 | 欧美a√在线| 国产午夜精品视频 | 日韩av在线播放观看 | 欧美 另类 交 | 好吊操免费视频 | 视频一区二区在线播放 | 欧美精品18videosex性欧美 | 国产精品乱码一区二区 | 麻豆伦理片| 日韩激情电影在线 | 久久国产这里只有精品 | 国产免费脚交足视频在线观看 | 日韩成人短视频 | 成人理论片 | 91精品日韩 | 亚洲乱码一区二区三区在线观看 | 91黑丝在线观看 | 亚洲天堂五月 | 国产福利视频一区二区三区 | 韩国三级hd中文字幕有哪些 | 国产五月婷婷 | 成年人在线视频网站 | 欧美精品99久久久 | 欧美日韩国产精品一区二区三区 | 麻豆影视在线播放 | 日韩精品人妻中文字幕 | 国产成人精品一区二 | 另类激情亚洲 | 麻豆69 | 亚洲av毛片基地 | 日本美女一级片 | 亚洲成人基地 | 高清av一区二区 | 国产l精品国产亚洲区久久 午夜青青草 | 日日干夜夜艹 | 精品国产乱码久久久久久鸭王1 | 欧美日韩久久久久 | 日本免费一区二区三区四区五六区 | 97看片网| 精品一区二区三区在线观看视频 | 男人天堂中文字幕 | 中文字幕一区二区三区在线观看 | 欧美日韩一区二区三区69堂 | 日本一区二区人妻 | japanese国产在线观看 | 我我色综合 | 国产农村妇女毛片精品久久 | 欧美一及片| 国产精品久久国产愉拍 | 伊人蕉久 | 91看片在线播放 | 国产视频久久久久 | 顶级嫩模啪啪呻吟不断好爽 | 69天堂| 欧美大色 | 日本三级中文 | 可以在线观看av的网站 | 亚洲成人av电影网站 | 中文字幕色哟哟 | 亚洲欧美一区二区激情 | 亚洲射吧 | 99精品成人 | 91九色网站 | 法国空姐在线观看完整版 | 领导揉我胸亲奶揉下面 | 精品国产一区二区三区噜噜噜 | 成人国产在线视频 | 无罩大乳的熟妇正在播放 | 99久久精品一区二区成人 | 无码人妻精品一区二区蜜桃网站 | 国产又粗又黄的视频 | 国产盗摄av| 内射一区二区三区 | 久久人体 | 91精品国产高清 | wwwxxx日本人| 都市激情 自拍偷拍 | 91精品综合久久久久久五月天 | 国产麻豆精品在线 | japanese强行粗暴 | 艳妇乳肉豪妇荡乳xxx | 免费在线不卡视频 |