<optgroup id="6y7f6"><small id="6y7f6"></small></optgroup>

<code id="6y7f6"></code>

  • <p id="6y7f6"><tbody id="6y7f6"><ins id="6y7f6"></ins></tbody></p>
    <code id="6y7f6"><form id="6y7f6"></form></code>

      linux 性能自我學習 ———— 軟中斷 [五]

      前言

      linux 性能的自我學習。

      正文

      什么是軟中斷呢?

      舉一個網絡的例子。

      linux 將中斷處理過程分為兩個階段:

      上半部用來快速處理中斷,他在中斷禁止模式下運行,注意是處理跟硬件緊密相關或時間敏感的工作。

      下半部用來延遲處理上半部未完成的工作,通常以內核線程的方式運行。

      比如網卡接收到數據包后,會通過硬件中斷的方式通知內核有新的數據到了。這時候,內核就應該調用中斷處理程序來響應它。

      對于上半部分來說,就是快速處理,把網卡的數據讀取到內存中,然后更新硬件寄存器的狀態,最后發一個軟中斷信號,通知下半部分進一步處理。

      下半部分被軟中斷喚醒后,需要從內存中找到網絡數據,再按照協議棧,對數據進行逐層解析和處理,直到把它送到了應用程序。

      實際上,上半部分會打斷cpu正在執行的任務,然后立即執行中斷處理程序。下半部分以內核線程的方式執行,并且每個cpu都對應一個軟中斷內核線程,名字為: ksoftirqd/cpu 編號

      軟中斷不僅僅是硬中斷的下部分,一些內核自定義時間也是軟中斷,比如內核調度和rcu鎖。

      怎么查看軟中斷呢?

      這里有10個不同的中斷類型。

      下面開始實驗。

      實驗

      需要用到的工具是:

      docker sysstat sar hping3 tcpdump 等工具。

      1. sar 是一個系統活動報告工具,既可以實時查看系統當前的活動,又可以配置保存和報告歷史數據。

      2. hping3 是一個可以構造tcp/ip 協議數據包的工具,可以對系統進行安全審計、防火墻測試等。

      3. tcpdump 是一個常用的網絡抓包工具,常用來分析各種網絡問題。

      hping3 在centos 安裝方式:

      創建本地安裝目錄
       mkdir -p /usr/local/hping && cd /usr/local/hping 
      下載并解壓
       wget https://github.com/antirez/hping/archive/master.zip && unzip master.zip && cd hping-master 
      安裝依賴包
       yum install -y libpcap-devel yum install -y gcc gcc-c++ yum install -y tcl tcl-devel 
      設置軟連接
       ln -sf /usr/include/pcap-bpf.h /usr/include/net/bpf.h 
      進行安裝
       ./configure && make strip && make install 
      測試查詢版本
       hping3 -v 
      

      然后執行:

      hping3 -S -p 80 -i u100 192.168.62.136
      

      這個時候你就發現變慢了:

       curl http://192.168.62.136:5555
      

      變慢一般查看cpu:

      看起來似乎正常。

      查看軟中斷:

      watch -d cat /proc/softirqs
      

      分析網卡情況:

      sar -n DEV 1
      

      第一列:表示報告時間

      第二列: iface 表示網卡

      第三四列: rxpck/s 和 txpck/s 分別表示每秒接收、發送的網絡幀數,也就是pps

      第五、六列: rxkb/s 和 txkb/s 表示每秒接收、發送的字節數,也就是bps。

      這里就看到一個問題:

      比如說接收了12690.54 包,但是txkB/s 只有669.21k。

      還有一個是接收了6550.00,發送是12690.54,如果是tcp的話,那么應該是收發個數差不多,因為tcp的確認機制。

      然后可以說,接收的都是小包。

      然后就可以通過tcpdump 來確定是什么問題,可以抓取到很多s包,確定是syn flood 攻擊。

      下一節快速定位問題的手段

      posted @ 2023-06-03 10:48  敖毛毛  閱讀(51)  評論(0編輯  收藏  舉報
      欧洲黄色网页链接入口,免费A级毛片无码无遮挡久久影院,a免费黄色网址,国产一级黄色的网站
      <optgroup id="6y7f6"><small id="6y7f6"></small></optgroup>

      <code id="6y7f6"></code>

    1. <p id="6y7f6"><tbody id="6y7f6"><ins id="6y7f6"></ins></tbody></p>
      <code id="6y7f6"><form id="6y7f6"></form></code>