一種動態實現核隔離的方法
本文分享自天翼雲開發者社群《 一種動態實現核隔離的方法 》,作者: y****n
一、技術背景
相關概念:
核隔離:指定的cpu核心只參與最低限度的OS核心計算;
DPDK(Date planedevelopment kit):是一個用來進行包資料處理加速的軟體庫。
Cpu親和性:程式要在某個給定的CPU上儘量長時間地執行而不被遷移到其他處理器的傾向性。
背景:
網元節點上,對cpu消耗比較多的程式可以分為幾個類別:
1、系統執行相關程式(透過systemd啟動和管理的程式以及核心執行緒)
2、網元相關程式(比如dpos、gobgpd程式)。
然而在現網中發現,由於系統執行相關程式與網元相關程式在同核心下執行時,會機率性的搶佔pmd執行緒的cpu,從而導致dpdk丟包,影響網元效能。一般使用的隔離系統程式方法如修改grub檔案、tuned調優方式都需要重啟才能生效,對於已經部署到現網的網元而言,這些方式會對使用者業務造成極大的影響。
因此,需要尋求一種核隔離方法,使得系統程式和網元程式互相隔離,互不影響,以解決網元裝置在系統程式搶佔業務程式cpu核心時可能出現的網路延時變高,丟包等問題,提高網路通訊的效能和可靠性。並且對於現網上執行的網元節點能夠做到無感知。
二、方案設計及實現
本方案主要是隔離systemd啟動和管理的程式的cpu核,限制其執行在網元程式的預留核上。
1、確定cpu預留核分配策略
根據系統規格的不同,確定不同的cpu核心分配策略。如1Numa8Cores的系統,可將系統程式分配到0-2核上;或者2Numa96Cores的系統。可將系統程式分配到numa0的前3個cpu核以及numa1的後3個cpu核上,其餘的核心為網元程式所佔用。分配策略需按照伺服器規格以及實際需求進行設計。
2、設定systemd程式親和性
透過修改/etc/systemd/system.conf檔案中的CPUAffinity中的值,將其改為第一步中的預留核數,如0-2。
透過systemd
3、設定systemd子程式親和性
對於systemd啟動和建立的程式主要分為幾類:
1、正在執行的systemd子程式
2、後續由systemd建立或者重啟的子程式
對於後續需要由systemd建立的程式或者重啟的程式,其cpu親和性會自動與systemd保持一致,因此只需要考慮正在執行的systemd子程式的核隔離。對此,採用taskset -cp cpus pid的方式進行設定。taskset是linux作業系統中的一個命令,它可以對程式進行CPU親和性設定,即讓程式在指定的CPU核心或者CPU核心集合上執行。
透過cgroup和taskset兩種方式的結合,可以實現在現網執行過程中,動態的對系統相關的程式(尤其是systemd啟動和管理的程式)進行核隔離的目的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2991753/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一種透過nacos動態配置實現多租戶的log4j2日誌物理隔離的設計
- 實現動態表單的一種思路
- 如何實現css隔離?CSS
- 一種統計ListView滾動距離的方法View
- MySQL是如何實現事物隔離?MySql
- 一文搞懂MySQL事務的隔離性如何實現|MVCCMySqlMVC
- 事務的四種隔離級別
- MySQL資料庫事務隔離性的實現MySql資料庫
- PouchContainer支援LXCFS實現高可靠容器隔離AI
- MySQL 事務隔離級別實現原理MySql
- Java如何實現消費資料隔離?Java
- 【自動化】使用PlayWright+代理IP實現多環境隔離
- 資料庫的四種隔離級別資料庫
- 理解事務的4種隔離級別
- (轉)事務的四種隔離級別
- MySQL 的四種事務隔離級別MySql
- SaaS多租戶的3種隔離模式模式
- 事務四種隔離級別
- 兩種動態建立表格的方法
- 四、InnoDB儲存引擎如何利用鎖實現四種事務隔離級別儲存引擎
- SpringBoot整合Quartz實現動態修改定時任務間隔Spring Bootquartz
- echarts間隔餅圖實現方法Echarts
- 一種子圖佈局方法的實現
- Mysql 四種事務隔離級別MySql
- MySQL事務(二)事務隔離的實現原理:一致性讀MySql
- WPF 通過程式實現異常隔離的客戶端客戶端
- 【JAVA】自定義類載入器實現類隔離Java
- 使用vue實現行列轉換的一種方法。Vue
- MySQL資料庫中的四種隔離級別MySql資料庫
- 面試問爛的 MySQL 四種隔離級別面試MySql
- [資料庫]事務的4種隔離級別資料庫
- Spring系列之事務的控制 註解實現+xml實現+事務的隔離等級SpringXML
- 變電站隔離刀閘狀態自動識別系統
- 一種Blazor開發模式下CSS的動態載入方法Blazor模式CSS
- Sy.ExpressionBuilder 也許會是動態查詢的另一種實現方式ExpressUI
- 深入理解MySQL中事務隔離級別的實現原理MySql
- 前端沙箱利用這些特性實現程式碼的隔離和限制前端
- jQuery動態生成html元素的幾種方法jQueryHTML