veLinux 簡介
veLinux 是火山引擎推出的開源 Linux 操作系統(tǒng),由字節(jié)跳動系統(tǒng)技術(shù)與工程團(tuán)隊主導(dǎo)研發(fā),廣泛集成了字節(jié)跳動多年來在支撐海量業(yè)務(wù)和億級并發(fā)上的系統(tǒng)技術(shù)經(jīng)驗。致力于為用戶提供穩(wěn)定、高性能、安全、易用的 Linux 操作系統(tǒng)選擇,提供全生命周期管理的完整解決方案和企業(yè)級服務(wù)支持。
自火山引擎開服以來,veLinux 支撐了包括容器服務(wù)、機器學(xué)習(xí)平臺、大數(shù)據(jù)服務(wù)等大量公有云上業(yè)務(wù),是火山引擎官方操作系統(tǒng),為火山引擎各個云產(chǎn)品提供穩(wěn)定的系統(tǒng)支撐,同時也服務(wù)了大量外部公有云客戶,在不同的應(yīng)用場景、不同的硬件機型上都表現(xiàn)出了優(yōu)異的性能。
整體設(shè)計
veLinux 在整體設(shè)計上,兼容 x86 和 ARM 生態(tài),同時兼容國內(nèi)用戶的使用習(xí)慣,并對多種硬件設(shè)備進(jìn)行了適配和優(yōu)化,同時針對火山引擎基礎(chǔ)設(shè)施進(jìn)行了深度優(yōu)化:
向上提供更穩(wěn)定、更安全、更易用的應(yīng)用接口,并針對云原生、大數(shù)據(jù)、機器學(xué)習(xí)等場景提供針對性優(yōu)化。
向下建立更準(zhǔn)確、更完整、更高效的硬件抽象,并基于各種硬件類型融合整體解決方案對外輸出。
豐富版本
自 2021年10月首次上線后,截止到當(dāng)前時間,veLinux 已經(jīng)迭代了多個版本,提供了豐富的產(chǎn)品矩陣,包括以下 4 個公共版本,用戶可以根據(jù)自己實際的業(yè)務(wù)需求選擇不同的版本免費使用:
通用版本
面向希望獲得火山引擎上極致操作系統(tǒng)體驗的用戶,針對火山引擎公有云環(huán)境進(jìn)行了深度定制與優(yōu)化,適用于各種云場景工作負(fù)載,尤其針對高并發(fā)、高 I/O 和混部場景進(jìn)行優(yōu)化適配。
快速啟動版
面向需要快速交付大量云服務(wù)器的用戶,可以滿足快速使用算力的需求。通過對操作系統(tǒng)內(nèi)核態(tài)及用戶態(tài)的啟動優(yōu)化,結(jié)合 cloud-init 服務(wù)啟動的順序優(yōu)化,實現(xiàn)了單 VM 啟動時間從 10+s 減少到 5s,達(dá)到業(yè)界領(lǐng)先水平。
等保認(rèn)證版
面向云上業(yè)務(wù)需要滿足《GB/T22239-2019信息安全技術(shù)網(wǎng)絡(luò)安全等級保護(hù)基本要求》的用戶,可以快速滿足網(wǎng)絡(luò)安全等級保護(hù)規(guī)定的要求,在身份鑒別、訪問控制、安全審計、入侵防范、惡意代碼防范等場景進(jìn)行安全加固。
兼容CentOS版
面向使用習(xí)慣更傾向 CentOS 系列操作系統(tǒng)的用戶,相比 CentOS ,提供更強的功能、更優(yōu)的性能和更穩(wěn)定的體驗,且用戶態(tài)完全兼容 CentOS,用戶可以無縫遷移。
此外,在機型適配方面,上述版本均適配了火山引擎所有的規(guī)格實例,包含 ECS/GPU/HPC/裸金屬等的完整機型矩陣,對 Intel、AMD 以及 ARM 實例均進(jìn)行了功能適配、性能調(diào)優(yōu)和穩(wěn)定性加固,保證其在各個架構(gòu)都能實現(xiàn)長期穩(wěn)定運行。
高性能內(nèi)核
操作系統(tǒng)的核心——veLinux Kernel 是基于社區(qū) Linux 5.4 LTS 版本并集成字節(jié)跳動自研新特性定制而成,包括容器及虛擬化等特定環(huán)境深度優(yōu)化,在性能,成本和穩(wěn)定性等多個維度達(dá)到最優(yōu),同時節(jié)省更多的 CPU 資源,實現(xiàn)降本提效。目前 veLinux 已集成以下場景的專屬優(yōu)化,且已全部提交并合入到 Kernel 社區(qū)。
針對 HugeTLB 重度使用的云場景,提出 HVO (HugeTLB Vmemmap Optimization),消除 vmemmap 冗余數(shù)據(jù),最大為用戶節(jié)省 HugeTLB 總量的 1.56%。
Dying memory cgroup 作為容器場景下一個顯著的內(nèi)存占用問題,極端情況下占用上百 GB 內(nèi)存。針對此問題,提出專項優(yōu)化方案,減少 dying memory cgroup 發(fā)生的概率以及優(yōu)化其容器部署密度。極端情況下,內(nèi)存占用減少 80%。
PSI(Pressure Stall Information)是用于評估系統(tǒng)資源壓力的主要指標(biāo)之一。PSI 在實際生產(chǎn)環(huán)境中 CPU 占用過高,veLinux Kernel 對其優(yōu)化并降低了 10% 的 CPU 使用,同時提出 PSI CPU FULL 指標(biāo),更方便量化和展示容器之間 CPU 資源競爭。
VDUSE(vDPA Device in Userspace) 是字節(jié)跳動自主研發(fā)的面向云原生場景的下一代高性能設(shè)備虛擬化框架,能夠為容器和虛機提供統(tǒng)一的I/O虛擬化層。目前,在云原生場景下,容器或者安全容器(虛機)在使用分布式存儲或者高性能RPC服務(wù)時,涉及的 I/O 數(shù)據(jù)平面比較龐雜,在運維和可維護(hù)性上也有所欠缺。且業(yè)界現(xiàn)在并沒有一個標(biāo)準(zhǔn)的技術(shù)方案,VDUSE 希望提供一個標(biāo)準(zhǔn)統(tǒng)一的技術(shù)方案,方便用戶在用戶態(tài)模擬磁盤、網(wǎng)卡等設(shè)備接入容器或者虛機。當(dāng)部署在 veLinux 上的云原生應(yīng)用希望訪問自研的分布式存儲服務(wù)時,通過 VDUSE,可以高效地開發(fā)一套高性能的用戶態(tài)接入方案,供上述的云原生應(yīng)用使用。
veLinux Kernel 在穩(wěn)定性和性能上做了大量的優(yōu)化,據(jù)不完全統(tǒng)計,系統(tǒng)技術(shù)與工程團(tuán)隊已為 Kernel 社區(qū)提交了上百個優(yōu)化及 bugfix patch,且未來我們將持續(xù)維護(hù)并及時響應(yīng)用戶的 issue。同時,我們也會積極地回饋社區(qū),與開發(fā)者們共享優(yōu)化成果。
更多閱讀:
VDUSE 介紹:
https://www.redhat.com/en/blog/introducing-vduse-software-defined-datapath-virtio
系統(tǒng)特性
當(dāng)前,企業(yè)上云的趨勢不可抵擋,云時代的來臨對基礎(chǔ)操作系統(tǒng)提出了更高更嚴(yán)苛的要求。除了對操作系統(tǒng)的安全性和穩(wěn)定性外,系統(tǒng)性能的提升也是重要的考慮因素,底層操作系統(tǒng)能否充分利用各種新硬件特性來提升業(yè)務(wù)的整體效能?此外,能否做到靈活使用,能否最大限度提高啟動速度,快速交付大量云服務(wù)器?這些都是云上用戶迫切關(guān)心的問題。10 年的技術(shù)積累和應(yīng)用實踐,火山引擎 veLinux 操作系統(tǒng)做出了解答。
穩(wěn)定性
veLinux 在字節(jié) IDC 部署量超百萬,是支撐字節(jié)跳動抖音、今日頭條、飛書等海量業(yè)務(wù)的系統(tǒng)底座,同時 veLinux 也是字節(jié)跳動旗下云平臺火山引擎的官方操作系統(tǒng),支撐了包括容器服務(wù)、機器學(xué)習(xí)平臺、大數(shù)據(jù)服務(wù)等大量公有云上業(yè)務(wù),為火山引擎各個云產(chǎn)品提供穩(wěn)定的系統(tǒng)支撐,其穩(wěn)定性在內(nèi)外部用戶得到實踐驗證,系統(tǒng)宕機率保持在萬分之一以下。
高性能
除了提供高性能的自研內(nèi)核外,veLinux 還在系統(tǒng)組件上做了大量的性能優(yōu)化。特別是基礎(chǔ)庫方面,針對不同的業(yè)務(wù)場景,進(jìn)行了大量針對性優(yōu)化。
OpenJDK
集成發(fā)布了優(yōu)化的 OpenJDK,更好的支持大數(shù)據(jù)處理等 Java 業(yè)務(wù),目前已經(jīng)在 EMR(Elastic MapReduce) 等業(yè)務(wù)中上線。
針對大數(shù)據(jù)數(shù)據(jù)存儲壓縮場景,veLinux 的 OpenJDK 集成了優(yōu)化的 zlib 實現(xiàn),基于 GZIP 的數(shù)據(jù)壓縮、解壓縮性能會得到有效改進(jìn),詳細(xì)數(shù)據(jù)請參考下方 zlib 章節(jié) 。
針對 Full GC 延時較長的問題,我們移植了 G1 Parallel Full GC 到 jdk-8 中,有效緩解了Full GC帶來的長延時問題。
很多業(yè)務(wù)不只是依賴 GC 性能,內(nèi)存分配器(例如 ptmalloc, jemalloc, tcmalloc) 對業(yè)務(wù)性能有影響也比較大,veLinux 的 OpenJDK 集成了不同版本的內(nèi)存分配器,并且可用參數(shù)選擇。
業(yè)務(wù)在容器內(nèi)的部署越來越多,但低版本的 OpenJDK 在容器中的性能表現(xiàn)并不好,比如用戶會遇到系統(tǒng)數(shù)據(jù)讀取慢、不準(zhǔn)確等問題,甚至運行在 lxcfs 時,還會碰到死循環(huán)等嚴(yán)重問題。關(guān)于上述問題,veLinux 的 OpenJDK 都做了針對性地修復(fù)和改進(jìn),為用戶提供業(yè)務(wù)性能保障,保證業(yè)務(wù)在容器中運行的穩(wěn)定性。
zlib
在內(nèi)部業(yè)務(wù)的性能分析優(yōu)化過程中,我們通過性能分析采集工具發(fā)現(xiàn), zlib 壓縮和解壓縮函數(shù)(deflate/inflate)的熱點,在內(nèi)部某業(yè)務(wù)線的的 CPU 占比超 50% 以上。由此可見,業(yè)務(wù)部署的madler/zlib 1.2.8 開源版本在性能上仍有提升空間。在調(diào)研過 intel/zlib、cloudflare/zlib、zlib-ng 等多個 zlib 版本后,最終在開源 madler/zlib 1.2.11 的基礎(chǔ)上,集成了多個優(yōu)化補?。?/p>
支持壓縮過程中哈希函數(shù)的向量化指令,并且重構(gòu)了字符串匹配的流程。
增強解壓過程中長字符串拷貝效率 。
支持 crc32/adler32 等校驗碼的向量化指令 。
在 Benchmark 測試中,壓縮和解壓效率顯示提高了 30%-50%。zlib 優(yōu)化后的版本部署到原來的業(yè)務(wù)線上,幫助該業(yè)務(wù)團(tuán)隊優(yōu)化 CPU 核心 5K+;目前該優(yōu)化已集成到 veLinux 的 OpenJDK 中,并在字節(jié)內(nèi)部多業(yè)務(wù)得到廣泛推廣與應(yīng)用。
?
Benchmark測試:壓縮和解壓縮性能對比圖
其他性能優(yōu)勢
除此之外,對比社區(qū)原生 Debian/CentOS,veLinux具備很強的性能優(yōu)勢,在字節(jié)內(nèi)部應(yīng)用實踐之后,字節(jié)樣本拼接和數(shù)據(jù)打點等業(yè)務(wù)端到端性能提升20%以上,其中字節(jié) metrics集群 CPU 使用率下降了36%。在性能測試中,對 Nginx/Redis/MySQL 等典型應(yīng)用的性能也有大幅提升:
Nginx吞吐性能提升?10%-40%
Redis get/set性能提升?5%-25%
MySQL讀寫性能提升?10%-60%
安全性
隨著網(wǎng)絡(luò)安全事件不斷發(fā)生,用戶對安全性的重視程度也越來越高,作為火山引擎的官方操作系統(tǒng),面對復(fù)雜的、規(guī)模不斷增加的用戶需求,veLinux 在安全性上需要做到全方位的建設(shè),才能保護(hù)用戶的信息和數(shù)據(jù)安全。
及時修復(fù) CVE 漏洞:CVE(Common Vulnerabilities and Exposures)是公共的安全漏洞列表,用于標(biāo)準(zhǔn)化識別已知網(wǎng)絡(luò)威脅。為了方便用戶更便捷地查看 CVE 更新情況,veLinux 官網(wǎng)發(fā)布了 CVE 安全中心:https://bytedance.github.io/kernel/sec,每周更新并修復(fù) CVE 補丁。
入侵檢測安全防護(hù):得益于字節(jié)安全團(tuán)隊的技術(shù)支持,veLinux 提供入侵檢測安全防護(hù),底層采用安全團(tuán)隊自研的開源項目 Elkeid,主要通過收集主機層的信息來實現(xiàn)入侵檢測、行為審計、攻擊溯源、資產(chǎn)盤點、合規(guī)基線檢測等能力,目前完整版本在字節(jié)跳動內(nèi)部的部署規(guī)模已達(dá)到數(shù)百萬量級,其穩(wěn)定性、性能、數(shù)據(jù)采集能力、檢測能力和溯源能力等均在內(nèi)部得到實戰(zhàn)驗證。
通過等保三級認(rèn)證:等保三級認(rèn)證是由國家公安機關(guān)對各機構(gòu)的信息系統(tǒng)安全等級保護(hù)狀況進(jìn)行的認(rèn)證與評定。veLinux 目前已通過三級等保認(rèn)證,這是國家對非銀行機構(gòu)的最高級認(rèn)證。這項安全認(rèn)證資質(zhì)已寫入火山引擎云安全白皮書,為云上用戶提供可靠的安全能力。
提供內(nèi)核熱補丁:快速修復(fù)在運行中機器的內(nèi)核漏洞。內(nèi)核熱補丁是一種動態(tài)為內(nèi)核打補丁的技術(shù),可以在不重啟系統(tǒng)的情況下,修復(fù)內(nèi)核 BUG 或者 CVE 漏洞,在最大程度上減少系統(tǒng)服務(wù)中斷時間,增加系統(tǒng)可用性。未來 veLinux 還將提供統(tǒng)一的補丁管理平臺、以及補丁客戶端的整套解決方案(內(nèi)測中),通過該平臺用戶可以將熱補丁批量下發(fā)至需要打補丁的機器,提高運維效率。
易用性
veLinux提供了很多業(yè)界主流的問題追蹤與調(diào)試工具,用戶可以方便地安裝使用,協(xié)助定位、解決業(yè)務(wù)運行中遇到的穩(wěn)定性或性能問題。
kdump-tools(以及相關(guān)的 kexec-tools、makedumpfile)是常用于在 Linux kernel panic(內(nèi)核致命錯誤) 之后 dump 內(nèi)存、保存現(xiàn)場的工具,基于 debian 社區(qū)版本,我們在 veLinux 中做了增強版本,幫助用戶提升穩(wěn)定性,節(jié)省預(yù)留內(nèi)存。
通過過濾無關(guān)的內(nèi)核 cmdline、替換 systemd 等方法來降低 kdump 內(nèi)核中的內(nèi)存使用,從而防止機器在 dump 內(nèi)存的過程中出現(xiàn) oom 的錯誤。
檢測內(nèi)存等硬件故障,提前結(jié)束 dump 過程,防止再次出現(xiàn)內(nèi)核錯誤。
提前 dump dmesg,防止在 dump 內(nèi)存失敗的情況下,獲取不到 dmesg 的信息。
在 kdump 側(cè)實現(xiàn) crashkernel = auto 功能,根據(jù)機器內(nèi)存自動設(shè)置預(yù)留給 kdump 的內(nèi)存的大小,且無需對內(nèi)核做定制化修改。
適配對 kdump 預(yù)留內(nèi)存位置有特殊要求的硬件廠商。
atop 是一款開源的單機性能監(jiān)測工具,支持實時觀測的同時、也支持讀取歷史文件排查問題。另外一個優(yōu)點是除提供CPU、MEM、DISK等全局指標(biāo)外,還提供進(jìn)程、線程級別的各項指標(biāo)監(jiān)控數(shù)據(jù)。鑒于atop的這些優(yōu)點,字節(jié)跳動基于社區(qū)的atop進(jìn)行優(yōu)化,目前已迭代3個版本,覆蓋公司全量服務(wù)器,穩(wěn)定運行三年多。字節(jié)版atop工具新特性如下:
穩(wěn)定性增強:增加oom killer 保護(hù)、修復(fù)atopcct統(tǒng)計、限制日志存儲總量防系統(tǒng)盤占滿等功能。
遠(yuǎn)程分析 支持json格式數(shù)據(jù)傳輸?shù)椒?wù)端,支持網(wǎng)頁版atop及集群內(nèi)數(shù)據(jù)聚合。
更多實用指標(biāo):NUMA維度的CPU及MEM指標(biāo)統(tǒng)計與聚合、runqueue delay、compact_stall、allocastall、InCsumErrors等指標(biāo)。
靈活使用:支持篩選Top N線程的監(jiān)控數(shù)據(jù),支持定制日志保留天數(shù)及存儲位置。
終端UI優(yōu)化:類htop,按照NUMA粒度,直觀展示所有CPU和內(nèi)存。達(dá)到縱覽所有CPU負(fù)載,直觀判斷CPU綁核是否均衡等目的。
快速啟動
對于用戶而言,系統(tǒng)啟動過程通常被定義為從系統(tǒng)上電到通過 ssh 登錄的過程,經(jīng)歷的時間即為系統(tǒng)啟動時間。具體來說,機器的啟動流程大體上可以根據(jù) CPU 的控制權(quán)轉(zhuǎn)移方向描述為“固件 -> 引導(dǎo)程序 -> 操作系統(tǒng)”。其中固件包括 BIOS/UEFI,引導(dǎo)程序包括常見的的 GRUB/U-Boot/LK 等,操作系統(tǒng)包含了內(nèi)核啟動、執(zhí)行 initrd 中的 init 進(jìn)程、再到執(zhí)行硬盤上的 init 進(jìn)程的過程。系統(tǒng)啟動速度是操作系統(tǒng)的重要性能指標(biāo)之一,特別對于云場景中的虛擬機,能夠快速啟動可以顯著提高用戶體驗。
veLinux 通過對內(nèi)核、驅(qū)動加載、系統(tǒng)服務(wù)的啟動優(yōu)化,以及 cloud-init 服務(wù)的啟動順序優(yōu)化,減少虛機啟動時間約 50%,提供快速啟動版,實現(xiàn)單虛擬機啟動時間 5s 內(nèi)。
靈活使用
在實際使用中,用戶提出基于 veLinux 進(jìn)行定制化的需求,例如安裝特定的驅(qū)動版本、內(nèi)置特定的軟件包等。veLinux 針對這個問題,提供靈活的 OS 自定義定制工具,可以在火山引擎、內(nèi)部平臺或本地鏡像基礎(chǔ)上,自動化完成定制,為用戶提供簡單便捷的定制窗口,一站式完成鏡像的變更、基準(zhǔn)測試等任務(wù),使廣大業(yè)務(wù)同學(xué)徹底擺脫基礎(chǔ)環(huán)境構(gòu)建、操作系統(tǒng)差異等帶來的技術(shù)困境。
CentOS 官方已計劃停止維護(hù) CentOS Linux項目,veLinux 提供的遷移工具(內(nèi)測中),能幫助用戶平滑從 CentOS 遷移至 veLinux CentOS 兼容版,后續(xù)還會支持更多操作系統(tǒng)無縫遷移至 veLinux 。
云原生特性
容器 OS版本 云原生場景下,保證集群內(nèi)宿主機的一致性非常重要,對單個節(jié)點的運維操作可能會導(dǎo)致環(huán)境的不一致,對應(yīng)用的性能穩(wěn)定性產(chǎn)生影響,甚至可能產(chǎn)生安全隱患。另一方面,與傳統(tǒng)系統(tǒng)不同的是,應(yīng)用通過容器部署,操作系統(tǒng)只需要提供云原生運行必要的組件,省去其他很多不必要的系統(tǒng)組件,實現(xiàn)系統(tǒng)輕量化,同時提升系統(tǒng)啟動時間。veLinux 正在內(nèi)測容器 OS 版本,該版本的優(yōu)勢為:
系統(tǒng)輕量化
(1)只包含 Kubernetes Pods 運行所依賴的軟件包和系統(tǒng)服務(wù),縮短系統(tǒng)啟動時間,精簡操作系統(tǒng)。 (2)根文件系統(tǒng)為只讀權(quán)限,只有 /etc和 /var 目錄可寫,以滿足基礎(chǔ)的系統(tǒng)配置需求。
系統(tǒng)維度升級回滾
遵循云原生不可變基礎(chǔ)設(shè)施原則,不支持單個包粒度的安裝、卸載和升級,不提供 apt 等軟件包管理工具,只支持以整個操作系統(tǒng)鏡像為粒度的更新和回滾,以此來保證集群內(nèi)各個節(jié)點的軟件包版本與系統(tǒng)配置的一致性。
lxcfs 組件優(yōu)化
lxcfs 是一個基于 FUSE 文件系統(tǒng)實現(xiàn)容器內(nèi)資源視圖隔離的開源組件,通過在容器中掛載 lxcfs 相關(guān)目錄和文件,執(zhí)行 free、top 等命令,能夠更精確地反映容器的資源使用情況。
veLinux 中的 lxcfs 組件在社區(qū) 5.0 版本的基礎(chǔ)上,修復(fù)了 /sys目錄下文件顯示不完全的問題,并模擬了 numa 節(jié)點拓?fù)?,使得在容器中?zhí)行 numactl 命令能夠返回正確的節(jié)點信息。此外,對社區(qū)版本存在 lxcfs 進(jìn)程退出重新啟動后無法正常工作的問題,veLinux 版本一方面通過 oom killer 保護(hù),最大限度地減少被 kill 的可能,另一方面提供 remount 機制,使得 lxcfs 進(jìn)程退出重新啟動后,remount 相關(guān)目錄到容器中,最大限度的降低對用戶的影響。
總結(jié)與規(guī)劃
操作系統(tǒng)一直伴隨著軟硬件技術(shù)的發(fā)展而發(fā)展,近年來,在軟件方面,云市場爆發(fā)式的增長,特別是云原生場景下,如何有效地進(jìn)行集群資源的管理、調(diào)度編排以及性能度量和監(jiān)控,都對操作系統(tǒng)提出了更高的要求;在硬件方面,芯片市場的環(huán)境變化以及主流 CPU 架構(gòu)的演進(jìn)發(fā)展,需要構(gòu)建更加自主可控的操作系統(tǒng),靈活應(yīng)對國內(nèi)外市場變化。針對云計算、國產(chǎn)化等場景,veLinux 實現(xiàn)了很多創(chuàng)新與優(yōu)化,以滿足不同用戶的業(yè)務(wù)需求。未來將陸續(xù)發(fā)布更多云原生特性,并推出適配國產(chǎn)處理器、RISC-V 處理器架構(gòu)的版本,歡迎大家持續(xù)關(guān)注。
另外,作為一款開源的操作系統(tǒng),veLinux 致力于為用戶提供可靠、高性能的操作系統(tǒng),歡迎更多感興趣的小伙伴加入 veLinux 的開源建設(shè),共同推進(jìn)國內(nèi)操作系統(tǒng)生態(tài)發(fā)展。
編輯:黃飛
?
評論