CPU-IO-網絡-內核參數的調優

CPU-IO-網絡-內核參數的調優

  • CPU-IO-網絡-內核參數的調優
    • 一、CPU 資源調優
      • 1.1 調整進程優先級(nice 值)
      • 1.2 設置 CPU 親和力(taskset)
      • 1.3 cpu命令描述
      • 1.4 使用 vmstat 分析系統瓶頸
    • 二、磁盤 I/O 調優
      • 2.1 ulimit 資源限制
      • 2.2 測試磁盤速度
    • 三、內核參數調優
      • 3.1 防御 SYN 洪水攻擊
      • 3.2 關鍵參數說明
    • 四、總結與建議

CPU-IO-網絡-內核參數的調優

一、CPU 資源調優

1.1 調整進程優先級(nice 值)

  • 作用:通過調整進程的 nice 值,改變其 CPU 調度優先級。

  • 范圍:-20(最高)到 19(最低),默認是 0。

  • 命令

    nice -n -5 vim a.txt      # 啟動時設置優先級nice:用于給新進程設置 “nice 值”(優先級的數值表示,范圍是 -2019-n -5:指定 nice 值為 -5(數值越小,優先級越高,系統會優先分配 CPU 資源)vim a.txt:要啟動的進程(這里是用 vim 打開 a.txt)效果:啟動的 vim 進程會獲得較高的 CPU 優先級,在系統繁忙時,它能搶到更多 CPU 時間,操作更流暢renice -n 6 24318         # 修改運行中進程的優先級調整已運行的進程的優先級。renice:用于修改已有進程的 nice-n 6:將 nice 值設為 6(數值較大,優先級較低,系統會減少對它的 CPU 分配)24318:目標進程的 PID(進程 ID,可通過ps或top命令查看)效果:PID 為 24318 的運行中進程,優先級會降低,在系統繁忙時,它會 “謙讓” CPU 資源給其他優先級更高的進
    
  • 注意:無法超出 -20~19 的范圍。

  • 關鍵規律:

    • nice 值越小(甚至負數)→ 優先級越高 → 系統越 “照顧” 這個進程;
    • nice 值越大 → 優先級越低 → 系統越 “冷落” 這個進程。

    ? 通常用于:讓重要程序(如服務器進程)優先級更高,讓耗資源但不緊急的程序(如后臺備份)優先級更低,合理分配 CPU 資源。
    在這里插入圖片描述
    在這里插入圖片描述

1.2 設置 CPU 親和力(taskset)

  • 作用:將進程綁定到指定 CPU 核心,減少上下文切換開銷。

  • 安裝yum install util-linux

  • 命令

    1)taskset -c 0 vim a.txt          # 綁定到 CPU0taskset:Linux 中用于設置進程 CPU 親和力(綁定 CPU 核心)的工具-c 0:-c 表示指定 CPU 核心編號(從 0 開始),這里綁定到第 0 號 CPU 核心vim a.txt:要啟動的進程(用 vim 打開 a.txt)效果:這個 vim 進程只會在 CPU0 上運行,不會被調度到其他核心,適合需要穩定占用單一核心的場景。2)taskset -cp 20146              # 查看進程 1087 的 CPU 綁定情況
    查看已運行進程的 CPU 綁定情況。-c:顯示 CPU 核心編號(更易讀)-p:表示操作對象是已存在的進程(通過 PID 指定)20146:目標進程的 PID(進程 ID,可通過 pstop 查看)[root@benet21 ~]# taskset -cp 20146
    pid 20146's current affinity list: 03)taskset -c 1,3 vim b.txt        # 綁定到 CPU1 和 CPU3
    啟動進程時,綁定到多個 CPU 核心(核心列表)。-c 1,3:指定進程只能在 CPU1 和 CPU3 上運行(核心編號用逗號分隔)效果:這個 vim 進程會在 CPU1 和 CPU3 之間被調度,但不會跑到其他核心(如 CPU0、CPU2),適合需要限制進程使用特定核心組的場景。測試 :ps -o psr -p 98822top  按F  P(空格選) 按q退出 再輸入 top
    生產環境場景:一般用在 你的業務(進程)非常重要 你需要綁定好的業務并且給他設置兩個
    

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

1.3 cpu命令描述

cat /proc/cpuinfo 是 Linux 系統中用于查看 CPU 硬件信息 的命令,通過讀取 /proc 虛擬文件系統中的 cpuinfo 文件,展示當前系統中 CPU 的詳細參數。

輸出內容的核心信息(以常見的多核 CPU 為例):

processor       : 0  # CPU 核心編號(從 0 開始,多核會依次顯示 0、1、2...)
vendor_id       : GenuineIntel  # CPU 廠商(如 Intel、AMD)
cpu family      : 6  # CPU 系列(廠商內部的產品系列編號)
model           : 158  # 型號(同系列中的具體型號)
model name      : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz  # 具體型號名稱和主頻
stepping        : 9  # 步進(硬件版本號,影響穩定性和兼容性)
microcode       : 0x84  # 微代碼版本(CPU 內置的底層程序版本)
cpu MHz         : 2808.000  # 當前運行頻率(動態調頻時會變化)
cache size      : 6144 KB  # 緩存大小(L3 緩存,影響數據訪問速度)
physical id   **  : 0  # 物理 CPU 編號(多物理 CPU 時區分,單 CPU 通常為 0)
siblings        : 8  # 單個物理 CPU 的邏輯核心數(包含超線程)
core id      **   : 0  # 物理核心編號(同一物理 CPU 內的核心編號)
cpu cores    **   : 4  # 單個物理 CPU 的物理核心數(此處為 4 核)
apicid          : 0  # 用于多核通信的 APIC 編號
initial apicid  : 0
fpu             : yes  # 是否支持浮點運算單元(FPU)
fpu_exception   : yes  # 是否支持 FPU 異常處理
cpuid level     : 22  # CPUID 指令支持的級別(用于查詢 CPU 功能)
wp              : yes  # 是否支持寫保護(內存安全特性)
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d  # CPU 支持的功能指令集(如 SSE、AVX 等加速指令)
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit  # 已知的硬件漏洞(如熔斷、幽靈等)
bogomips        : 5616.00  # 偽性能指標(早期用于粗略衡量 CPU 速度,參考意義不大)
clflush size    : 64  # CLFLUSH 指令一次能刷新的緩存大小(字節)
cache_alignment : 64  # 緩存對齊粒度(字節,影響內存訪問效率)
address sizes   : 39 bits physical, 48 bits virtual  # 支持的物理/虛擬地址位數(決定最大內存支持)
power management:  # 電源管理相關特性(如節能、調頻技術)

在這里插入圖片描述

詳細詳解:

  1. 核心數量

    • processor 條目數量 → 總邏輯核心數(包含超線程)。
    • cpu cores → 單個物理 CPU 的物理核心數(如 cpu cores : 4 表示 4 核)。
    • 例:4 物理核 + 超線程 = 8 邏輯核 → 會顯示 8 個 processor 條目(0~7)。
  2. 型號和主頻

    • model name 直接顯示 CPU 型號(如 i7-7700HQ)和基礎主頻(如 2.80GHz)。
    • cpu MHz 顯示當前實時頻率(支持睿頻的 CPU 會動態變化)。
  3. 廠商和功能

    • vendor_id 區分 Intel/AMD 等廠商。
    • flags 列出支持的指令集(如 avx2 加速多媒體處理,vmx 支持虛擬化)。

常用場景:

  • 快速確認服務器的 CPU 核心數(判斷并行處理能力)。
  • 檢查 CPU 是否支持特定功能(如虛擬化、硬件加速指令)。
  • 排查硬件相關問題(如型號是否與預期一致,是否存在已知漏洞)。

簡單說,這條命令是“查看 CPU 身份證”的工具,能讓你快速了解系統的 CPU 配置。

操作指令

  • 物理cpu:物理cpu數量,實際服務器中插槽上的cpu個數

    cat /proc/cpuinfo | grep "physical id" | sort |uniq
    
  • 邏輯cpu:操作系統可以使用邏輯CPU來模擬出真實CPU的效果

    cat /proc/cpuinfo | grep "processor" | sort -u | wc -l
    
  • cpu核數:一塊CPU上面能處理數據的芯片組的數量

    cat /proc/cpuinfo | grep "cpu cores" | sort | uniq
    

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

1.4 使用 vmstat 分析系統瓶頸

  • 關鍵指標
    • r:等待運行的進程數,若持續 > CPU核心數×3,說明 CPU 繁忙。
    • us:用戶態 CPU 時間,高表示應用程序消耗多。
    • sy:系統態 CPU 時間,高表示內核消耗多。
    • wa:等待 I/O 的 CPU 時間,高表示磁盤 I/O 瓶頸。
    • id:空閑 CPU 時間。
  • 實戰場景
    • 上傳大文件:wa 高,bo 大,說明寫磁盤繁忙。
    • 復制文件:bibo 都高,wa 高,說明讀寫磁盤都繁忙。
    • 高并發 HTTP 請求:r 高,us 高,說明 CPU 處理不過來。

在這里插入圖片描述

二、磁盤 I/O 調優

2.1 ulimit 資源限制

  • 配置文件/etc/security/limits.conf

    資源限制配置文件(通常是 /etc/security/limits.conf/etc/security/limits.d/ 目錄下的配置文件)中的設置,用于限制系統用戶的進程資源使用上限

  • 常用設置

    * soft nofile 1024000
    * hard nofile 1024000
    * soft nproc 65535
    * hard nproc 65535*:表示對 所有用戶 生效(也可以指定具體用戶名,如 root 或 www)soft:軟限制(警告線),超過時系統會警告,但允許臨時超過(直到進程結束)hard:硬限制(強制線),由內核強制執行,絕對不能超過(軟限制不能高于硬限制)nofile:限制 打開文件描述符的數量(包括文件、網絡連接、管道等,Linux 中 “一切皆文件”)nproc:限制 用戶能創建的進程 / 線程數量具體配置的含義:* soft nofile 1024000所有用戶的 軟限制:最多可打開 1024000 個文件描述符(超過會警告)* hard nofile 1024000所有用戶的 硬限制:絕對不能打開超過 1024000 個文件描述符* soft nproc 65535所有用戶的 軟限制:最多可創建 65535 個進程 / 線程(超過會警告)* hard nproc 65535所有用戶的 硬限制:絕對不能創建超過 65535 個進程 / 線程ulimit -n  # 查看 nofile 軟限制
    ulimit -Hn # 查看 nofile 硬限制
    ulimit -u  # 查看 nproc 軟限制
  • 臨時修改ulimit -n 10000
    在這里插入圖片描述

  • 永久修改:vim /etc/security/limits.conf 去最尾設置

2.2 測試磁盤速度

  • 讀速度測試

    是一個用于測試硬盤讀取速度的命令,主要用于評估磁盤的順序讀取性能

    hdparm -t --direct /dev/sdahdparm:Linux 下用于查看和調整硬盤參數的工具-t:測試硬盤的緩存讀取速度(讀取數據時會利用硬盤緩存和系統緩存)--direct:啟用 “直接 IO” 模式(跳過系統緩存,直接從硬盤讀取原始數據,更接近真實的物理讀取速度)/dev/sda:指定要測試的硬盤設備(sda 通常是系統的第一個硬盤)

在這里插入圖片描述

  • 寫速度測試

    dd if=/dev/zero of=/test.dbf bs=1M count=2000 oflag=directdd:Linux 下用于復制和轉換文件的工具,常被用來測試磁盤性能if=/dev/zero:if 表示 “輸入文件”,/dev/zero 是一個特殊設備文件,會不斷生成二進制的 0 數據(可理解為 “無限的空數據來源”)of=/test.dbf:of 表示 “輸出文件”,即把數據寫入到 /test.dbf 這個文件中bs=1M:bs 表示 “塊大小”,這里設置為 1MB(每次讀寫的數據塊大小)count=2000:count 表示 “塊數量”,這里生成 2000 個 1MB 的塊,總文件大小為 2000MB(約 2GB)oflag=direct:oflag 表示 “輸出標志”,direct 啟用直接 IO 模式(跳過系統緩存,直接寫入物理硬盤,更真實反映硬盤寫入速度)

在這里插入圖片描述

  • 時間測試

    time dd if=/dev/zero of=/test.dbf bs=1M count=200
    time:用于統計后續命令的執行時間(包括實際耗時、用戶態耗時、內核態耗時)
    dd:文件復制工具,這里用于生成測試文件if=/dev/zero:輸入源為 /dev/zero(不斷生成空數據,作為寫入的數據源)of=/test.dbf:輸出文件為 /test.dbf(要創建的測試文件)bs=1M:每次讀寫的數據塊大小為 1MBcount=200:共寫入 200 個塊,總文件大小為 200MB(1M × 200)信息詳解:dd 部分的輸出:確認寫入了 200MB 數據652 MB/s 是計算出的寫入速度(總數據量 ÷ 實際耗時)注意:這里沒有 oflag=direct,寫入速度會包含系統緩存的加速效果,可能比硬盤真實物理速度快(尤其是寫入小文件時)。time 部分的輸出:real:實際總耗時(從命令開始到結束的墻鐘時間,0.322 秒)user:命令在用戶態運行的時間(幾乎為 0,因為主要是 IO 操作)sys:命令在內核態運行的時間(0.320 秒,主要是磁盤 IO 的內核處理時間)

在這里插入圖片描述


三、內核參數調優

3.1 防御 SYN 洪水攻擊

  • 修改 /etc/sysctl.conf

    net.ipv4.tcp_synack_retries = 0
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_max_syn_backlog = 20480
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 10
    fs.file-max = 819200
    net.core.somaxconn = 65535
    net.core.rmem_max = 1024123000
    net.core.wmem_max = 16777216
    net.core.netdev_max_backlog = 165536
    net.ipv4.ip_local_port_range = 10000 65535
    
  • 生效sysctl -p

3.2 關鍵參數說明

  • tcp_synack_retries=0:不重發 SYN+ACK,快速釋放半連接。
  • tcp_syncookies=1:啟用 SYN Cookie 防御少量攻擊。
  • file-max:系統最大文件句柄數。
  • somaxconn:最大連接隊列長度。

四、總結與建議

模塊調優手段適用場景
CPUnice、taskset、vmstat高 CPU 負載、多進程調度
磁盤 I/Oulimit、hdparm、dd高并發讀寫、備份任務
網絡Bonding、內核參數高可用、負載均衡、防攻擊
內核sysctl 參數優化高并發連接、安全防護

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

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

相關文章

JavaScript 實戰進階:工程化、性能與未來展望

一、JavaScript 工程化實踐 隨著前端項目規模的擴大,“工程化”成為提升開發效率、保證代碼質量的核心手段。它涵蓋模塊化設計、構建工具鏈、代碼規范與測試等多個維度。 (一)模塊化開發 模塊化是將復雜代碼拆分為可復用、可維護的獨立單元的…

破局與增長:全球電商的業財一體化戰略與數字化未來

一、全球電商的數字化轉型背景在瞬息萬變的全球電商市場中,數字化轉型已經成為企業保持競爭力的必由之路。近年來,國內品牌出海企業快速擴張,業務范圍覆蓋數十個國家和平臺。然而,隨著規模的幾何級增長,行業普遍面臨以…

Excel怎么換行?3種單元格內換行方法?【圖文詳解】Excel自動換行?Alt+Enter?

一、問題背景 在日常使用 Excel 處理數據時,很多人會遇到這樣的困擾:輸入長文本(比如產品說明、多行備注、地址信息等)時,文字會一直橫向延伸,不僅導致單元格變寬、表格排版混亂,還可能遮擋相鄰…

【生產實踐】局域網多服務器多用戶SSH登錄批量測試(附完整shell腳本)

在企業運維場景中,局域網內多臺服務器的SSH登錄憑據(用戶名/密碼)驗證是高頻需求——無論是新服務器部署后的憑據校驗,還是定期安全巡檢中的憑據有效性檢查,手動逐臺逐用戶測試不僅效率低下,還容易出錯。 本…

專題:2025人工智能2.0智能體驅動ERP、生成式AI經濟現狀落地報告|附400+份報告PDF、原數據表匯總下載

原文鏈接:https://tecdat.cn/?p43713 2025年,人工智能正從技術概念快速滲透到產業實操層面——大模型推理能力的突破讓復雜任務自動化成為可能,AI代理的規模化應用重構企業效率邊界,而AI企業“天生全球化”的特性更是打破了傳統創…

機器學習--支持向量機

目錄 一、為什么需要 SVM?先解決 “怎么分才好” 的問題 二、SVM 的核心:什么是 “最好的超平面”?用 “間隔” 說話 1. 先搞懂兩個關鍵概念 2. 目標:把 “間隔” 拉到最大 三、從 “想要最大間隔” 到 “解數學問題”&#…

Multi-output Classification and Multi-label Classification|多輸出分類和多標簽分類

----------------------------------------------------------------------------------------------- 這是我在我的網站中截取的文章,有更多的文章歡迎來訪問我自己的博客網站rn.berlinlian.cn,這里還有很多有關計算機的知識,歡迎進行留言或…

【目標檢測】論文閱讀5

Small-object detection based on YOLOv5 in autonomous driving systems 發表期刊:Pattern Recognition Letters;發表時間:2023年 論文地址 摘要 隨著自動駕駛領域的快速發展,對更快、更準確的目標檢測框架的需求已經成為必要。…

Playwright進階指南 (6) | 自動化測試實戰

2025企業級測試解決方案:從單測到千級并發,打造高可用測試體系一、為什么傳統自動化測試難以落地?根據2025年最新行業調研,測試項目失敗的三大核心原因:失敗原因占比典型表現維護成本過高45%選擇器頻繁失效&#xff0c…

uv 簡單使用

二進制安裝 powershell -ExecutionPolicy Bypass -c "irm https://ghproxy.cn/https://github.com/astral-sh/uv/releases/download/0.8.13/uv-installer.ps1 | iex"版本號:0.8.13,自行更改github加速前綴:https://ghproxy.cn/ 配置…

Linux程序管理

目錄 一、Linux程序與進程 1、程序,進程,線程的概念 2、程序和進程的區別 3、進程和線程的區別 二、Linux進程基礎(生命周期) 1、進程生命周期 2、父子進程的關系 三、程序管理 1、課程目標 2、常見的軟件包類型 3、安裝方法 使用獨立的rpm包安裝 rpm包的命名方法…

Linux-進程替換exec

文章目錄進程替換exec 函數族使用說明查看命令的路徑 which測試 execl測試 execlp測試 execv測試 execvp進程替換 概述 在 Windows 平臺下,我們可以通過雙擊運行可執行程序,讓這個可執行程序成為一個進程;而在 Linux 平臺,我們可…

Seaborn數據可視化實戰:Seaborn數據可視化實戰入門

Seaborn數據可視化實戰:從數據到圖表的完整旅程 學習目標 通過本課程的學習,你將能夠掌握使用Seaborn進行數據可視化的完整流程,從數據準備到圖表設計,再到最終的圖表呈現。本課程將通過一個具體的項目案例,幫助你全面…

控制系統仿真之時域分析(二)

一、時域分析法時域分析法是從傳遞函數出發直接在時域上研究控制系統性能的方法,實質上是研究系統在某典型輸入信號下隨時間變化的曲線,從而分析系統性能。控制系統的時域響應決定于系統本身的參數和結構,還有系統的初始狀態,以及…

PDF 表單創建與分發

PDF 表單是一種交互式文檔,允許用戶填寫信息、做出選擇并提交數據。與靜態 PDF 不同,PDF 表單包含可交互的字段元素,如文本框、復選框、單選按鈕等。#mermaid-svg-sZe9We4UG0yKymyl {font-family:"trebuchet ms",verdana,arial,san…

Guava 簡介:讓 Java 開發更高效

Guava 簡介:讓 Java 開發更高效 Guava 是由 Google 開源的 Java 庫,旨在為開發者提供一系列實用的工具類,以提高開發效率。它包含了集合類、緩存、并發工具、字符串處理等實用方法。 Guava 的常用場景 集合處理:Guava 提供了多種擴…

「ECG信號處理——(24)基于ECG和EEG信號的多模態融合疲勞分析」2025年8月23日

目錄 一、引言 二、核心原理 2.1 心電 HRV 疲勞關聯原理 2.2 腦電 EEG 疲勞關聯原理 2.3 疲勞綜合指數 三、數據處理流程 四、結果展示與分析 參考文獻 一、引言 針對作業安全(如駕駛、精密操作)場景下的疲勞狀態實時監測需求,本文提…

EXCEL自動調整列寬適應A4 A3 A2

Public xlPaperA2%Sub 填滿頁面排版()xlPaperA2 66 A2編號66Dim ws As Worksheet: Set ws ActiveSheetDim FirstCol As Long, LastCol As Long, LastRow As LongDim TargetRange As RangeDim UsablePageWidth As DoubleDim CurrentWidth As DoubleDim StartFontSize As Doubl…

Linux系統性能優化全攻略:從CPU到網絡的全方位監控與診斷

引言 在Linux系統運維和開發過程中,系統性能優化是一個永恒的話題。無論是服務器負載過高,還是應用程序響應緩慢,準確快速地定位問題根源至關重要。本文將全面介紹Linux系統中常用的性能診斷工具和方法,幫助您從CPU、內存、磁盤I/…

uniapp+vue+uCharts開發常見問題匯總

項目結構:uniapp vue2 uni-ui uCharts 1、chunk-vendors.js:2765[Vue warn]: Invalid prop: custom validator check failed for prop "navigationBarTextStyle". 檢索發現原因: 在 pages.json 文件中,navigationBarTextStyle 屬…