日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

某云上用戶反饋,虛擬機cpu負載 軟中斷SI 指標高 ,請求云廠商協助排查

 

從圖示來看,cpu3 軟中斷任務明顯 ,大量的負載中斷都發生在cpu3上

linux 中的中斷處理程序分為上半部和下半部:
上半部對應硬件中斷,用來快速處理中斷。
下半部對應軟中斷,用來異步處理上半部未完成的工作。
Linux 中的軟中斷包括網絡收發、定時、調度、等各種類型,可以通過查看 /proc/softirqs 來觀察軟中斷的運行情況


排查過程

1. vmstat 1 : 可以看到cpu 每秒上下文切換和中斷次數較多,cpu 有較多隊列等待

 

cs(context switch)是每秒上下文切換的次數。
in(interrupt)則是每秒中斷的次數。
r(Running or Runnable)是就緒隊列的長度,也就是正在運行和等待CPU的進程數。
b(Blocked)則是處于不可中斷睡眠狀態的進程數。

2.pidstat -w 查看進程上下文切換情況

# 每隔5秒輸出1組數據
$ pidsat -w 5
Linux 4.15.0 (ubuntu) 09/23/18 _x86_64_ (2 CPU)
08:18:26 UID PID cswch/s nvcswch/s Command
08:18:31 0 1 0.20 0.00 sysemd
08:18:31 0 8 5.40 0.00 rcu_sched

cswch ,表示每秒自愿上下文切換(voluntary context switches)的次數,
nvcswch ,表示每秒非自愿上下文切換(non voluntary context switches)的次數

3. cat /proc/softirqs : 查看軟中斷統計 : 可以分析發現 ,cpu3 上的中斷條目最多?.NET_RX 網絡數據包接收軟中斷的變化比較快 ,網卡收發包大部分處理都在cpu3 , 單cpu 有處理阻塞現象

 

4.. ethtool -l eth0 查看網卡隊列情況 : 網卡隊列只有一個 , NET_RX 中斷負載在cpu3 ,初步定位單隊列原因導致網絡中斷網絡中斷不能負載均衡,大部都集中在cpu3 處理

 

5.使能網絡中斷負載均衡 , 打算調整虛擬機網卡隊列數,virsh edit domain , 添加如下 : 隊列改成為8

 

6.在控制臺重啟虛擬機 ,通過VNC 登錄虛擬機看是否生效 ,檢查已經生效

 

7.再次查看cpu中斷負載情況 : top 命令查看 : 發現si中斷比較分散在各個核上 ,問題解決

 

通過增加網絡多隊列,讓cpu 軟中斷負載均衡 ,問題得到解決


舉例說明軟中斷機制 :

舉個生活中的例子"

比如說你訂了一份外賣,但是不確定外賣什么時候送到,也沒有別的方法了解外賣的進度,但是,配送員送外賣是不等人的,到了你這兒沒人取的話,就直接走人了。所以你只能苦苦等著,時不時去門口看看外賣送到沒,而不能干其他事情。
不過呢,如果在訂外賣的時候,你就跟配送員約定好,讓他送到后給你打個電話,那你就不用苦苦等待了,就可以去忙別的事情,直到電話一響,接電話、取外賣就可以了。 這里的“打電話”,其實就是一個中斷。
沒接到電話的時候,你可以做其他的事情;只有接到了電話(也就是發生中斷),你才要進行另一個動作:取外賣。
這個例子你就可以發現,中斷其實是一種異步的事件處理機制,可以提高系統的并發處理能力。

事實上,為了解決中斷處理程序執行過長和中斷丟失的問題,Linux 將中斷處理過程分成了兩個階段,也就是上半部和下半部:
上半部用來快速處理中斷,它在中斷禁止模式下運行,主要處理跟硬件緊密相關工作。
下半部用來延遲處理上半部未完成的工作,通常以內核線程的方式運行。

比如說前面取外賣的例子,上半部就是你接聽電話,告訴配送員你已經知道了,其他事兒見面再說,然后電話就可以掛斷了;下半部才是取外賣的動作,以及見面后商量發票處理的動作

除了取外賣,我再舉個最常見的網卡接收數據包的例子,讓你更好地理解。
網卡接收到數據包后,會通過硬件中斷的方式,通知內核有新的數據到了。這時,內核就應該調用中斷處理程序來響應它。
對上半部來說,既然是快速處理,其實就是要把網卡的數據讀到內存中,然后更新一下硬件寄存器的狀態(表示數據已經讀好了),最后再發送一個軟中斷信號,通知下半部做進一步的處理。
而下半部被軟中斷信號喚醒后,需要從內存中找到網絡數據,再按照網絡協議棧,對數據進行逐層解析和處理,直到把它送給應用程序。

所以,這兩個階段你也可以這樣理解:
上半部直接處理硬件請求,也就是我們常說的硬中斷,特點是快速執行;
而下半部則是由內核觸發,也就是我們常說的軟中斷,特點是延遲執行;

其他場景舉例 :

提問 : 經常聽同事說大量的網絡小包會導致性能問題,為什么呢?
回答 : 因為大量的網絡小包會導致頻繁的硬中斷和軟中斷,所以大量網絡小包傳輸很慢,但如果將網絡包一次傳遞,是不是會快很多呢 ,就是這個道理

 

分享到:
標簽:性能 優化
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定