簡體   English   中英

如何設置前4個內核的所有系統irq

[英]how to set all system irq for first 4 cores

服務器:我有2個Intel 10核cpus或8核的服務器。 因此,有些具有40核,有些具有32核(啟用intel HT)

背景:我正在運行我們的應用程序,它將隔離cpus,目前,我隔離了該應用程序的最后32個核心(核心8-39)。 4個核心(核心4-7)供其他使用(正常情況下,它將使用50%sys cpu)。 我想為系統IRQ分配核心0-3。 從目前開始,如果我運行該應用程序,系統響應非常慢,我認為某些irq請求已與4-7核心發生爭議,從而導致響應較低。 您認為是否可能僅使用4個內核來處理系統irq?

如果您有一個以上的插槽(“石頭”),則說明您擁有NUMA系統。 這是獲取更多信息的鏈接https://en.wikipedia.org/wiki/Non-uniform_memory_access

嘗試在同一插槽上使用CPU。 下面我將解釋為什么以及如何做到這一點

  1. 確定每個插槽上到底有哪些CPU ID。

    % numactl --hardware available: 2 nodes (0-1) node 0 cpus: 0 2 4 6 8 10 12 14 16 18 20 22 node 0 size: 24565 MB node 0 free: 2069 MB node 1 cpus: 1 3 5 7 9 11 13 15 17 19 21 23 node 1 size: 24575 MB node 1 free: 1806 MB node distances: node 0 1 0: 10 20 1: 20 10

此處的“節點”是指“插槽”(石頭)。 因此,0、2、4、6個CPU位於同一節點上。 將所有IRQ移到一個節點以對一組CPU使用L3緩存是有意義的。

  1. 隔離除0、2、4、6外的所有CPU。

需要添加參數以啟動Linux內核isolcpus = cpu_number [,cpu_number,...]

例如

isolcpus=1,3,5,7-31
  1. 控制哪些IRQ在哪些CPU上運行

cat / proc / interrupts

  1. 使用numactl命令啟動您的應用程序以對齊CPU和內存。 (這里需要了解什么是NUMA並對齊。請點擊本文開頭的鏈接)

numactl [--membind = nodes] [--cpunodebind = nodes]

  1. 您的問題比我在這里提到的要大得多。

如果您看到系統運行緩慢,則需要了解瓶頸。 嘗試使用top,vmstat,iostat收集原始信息,以找出弱點。

提供您系統的一些統計信息,我將幫助您正確設置它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM