自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊Kata容器的I/O性能

系統(tǒng) Linux
在參加了2019年倫敦OpenInfra Days的Kata容器研討會(huì)之后,我們對(duì)它們的啟動(dòng)時(shí)間印象比較深刻,與Kubernetes集群中的普通runC容器相比僅稍慢一些。

 本文的所有分析是基于Kata容器1.6.2版本。

[[329552]]

在參加了2019年倫敦OpenInfra Days的Kata容器研討會(huì)之后,我們對(duì)它們的啟動(dòng)時(shí)間印象比較深刻,與Kubernetes集群中的普通runC容器相比僅稍慢一些。我們自然而然的對(duì)它們的磁盤I/O綁定性能以及它們是否也符性能要求感到好奇。在本文中,我們將探討這個(gè)主題,以了解在I/O綁定性能和安全性都是關(guān)鍵需求的環(huán)境中使用此技術(shù)的利弊。

什么是Kata容器?

Kata容器是輕量級(jí)vm,旨在與Docker和Kubernetes等容器編排軟件無(wú)縫集成。設(shè)想的一個(gè)用例是運(yùn)行不受信任的工作負(fù)載,利用不與主機(jī)共享操作系統(tǒng)內(nèi)核所獲得的額外隔離。然而,在最近一次對(duì)虛擬機(jī)和容器的調(diào)查中,使用宿主機(jī)內(nèi)核導(dǎo)致額外安全性這一毫無(wú)疑問(wèn)的假設(shè)受到了挑戰(zhàn)。Kata源于Intel Clear Containers和Hyper runV技術(shù)。gVisor的目標(biāo)是通過(guò)過(guò)濾和重定向系統(tǒng)調(diào)用到單獨(dú)的用戶空間內(nèi)核來(lái)解決類似的問(wèn)題。因此,gVisor會(huì)受到運(yùn)行時(shí)性能損失。關(guān)于gVisor的進(jìn)一步討論超出了本博客的范圍。

為Kata配置Kubernetes

Kata容器符合OCI,這意味著支持外部運(yùn)行時(shí)類的容器運(yùn)行時(shí)接口(CRI)可以使用Kata來(lái)運(yùn)行工作負(fù)載。這些CRI的例子目前包括CRI-O和containerd,它們都默認(rèn)使用runC,但這可以替換為kata qemu運(yùn)行。從Kubernetes 1.14+開始,RuntimeClass特性標(biāo)志已升級(jí)到beta,因此默認(rèn)啟用。因此,設(shè)置相對(duì)簡(jiǎn)單。

目前Kata支持qemu和firecracker hypervisor后端,但對(duì)后者的支持被認(rèn)為是初步的,特別是缺乏主機(jī)到客戶的文件共享。這讓我們將kata qemu作為當(dāng)前的選項(xiàng),其中virtio-9p提供了基本的共享文件系統(tǒng)功能,這對(duì)分析至關(guān)重要(測(cè)試路徑是安裝在主機(jī)上的網(wǎng)絡(luò)文件系統(tǒng))。

沒有這些先決條件,Kata啟動(dòng)將無(wú)聲地失敗(我們很難學(xué)到了這一點(diǎn))。

這個(gè)示例要點(diǎn)展示了如何在Minikube集群中將runC替換為Kata運(yùn)行時(shí)。注意,在編寫本文時(shí),Kata容器有額外的主機(jī)要求:

  • Kata將只在配置為支持嵌套虛擬化的計(jì)算機(jī)上運(yùn)行。
  • Kata至少需要一個(gè)Westmere處理器架構(gòu)。

如果沒有這些先決條件,Kata的將悄無(wú)聲息地失敗(我們是從多次實(shí)踐中得到的)。

為了進(jìn)行此分析,部署了一個(gè)裸機(jī)Kubernetes集群,使用OpenStack Heat通過(guò)我們的appliances playbooks配置機(jī)器,并使用Kubespray將它們配置為Kubernetes集群。Kubespray支持除Docker之外的其他容器運(yùn)行時(shí)規(guī)范,例如CRI-O和 containerd,這是支持Kata運(yùn)行時(shí)所必需的。

設(shè)計(jì)I/O性能測(cè)試方案

為了對(duì)Kata容器的I/O性能進(jìn)行基準(zhǔn)測(cè)試,我們?cè)诼銠C(jī)和runC容器的情況下提出了等效的場(chǎng)景來(lái)進(jìn)行比較。在所有情況下,我們都使用fio(3.1版)作為I/O基準(zhǔn)測(cè)試工具,調(diào)用方式如下,其中$SCRATCH_DIR是安裝在主機(jī)上的BeeGFS(本節(jié)稍后將詳細(xì)介紹)網(wǎng)絡(luò)存儲(chǔ)的路徑:

  1. fio fio_jobfile.fio --fallocate=none --runtime=30 --directory=$SCRATCH_DIR --output-format=json+ --blocksize=65536 --output=65536.json 

該fio_jobfile.fio上述引用的文件內(nèi)容如下:

  1. [global
  2. ; Parameters common to all test environments 
  3. ; Ensure that jobs run for a specified time limit, not I/O quantity 
  4. time_based=1 
  5. To model application load at greater scale, each test client will maintain 
  6. ; a number of concurrent I/Os. 
  7. ioengine=libaio 
  8. iodepth=8 
  9. ; Note: these two settings are mutually exclusive 
  10. ; (and may not apply for Windows test clients) 
  11. direct=1 
  12. buffered=0 
  13. Set a number of workers on this client 
  14. thread=0 
  15. numjobs=4 
  16. group_reporting=1 
  17. ; Each file for each job thread is this size 
  18. filesize=32g 
  19. size=32g 
  20. filename_format=$jobnum.dat 
  21. [fio-job] 
  22. ; FIO_RW is read, write, randread or randwrite 
  23. rw=${FIO_RW} 
Scenario 客戶端數(shù)量 磁盤I/O模式
裸機(jī) 1 順序讀取
runC容器 8 隨機(jī)讀取
Kata容器 64 順序?qū)?/span>
    隨機(jī)寫

為I/O性能研究探索的參數(shù)空間涵蓋了36種方案、客戶機(jī)數(shù)量和磁盤I/O模式的組合。

結(jié)果

磁盤I/O吞吐量

在這些結(jié)果中,我們繪制了所有客戶端上的總帶寬,展示了單個(gè)客戶端可以實(shí)現(xiàn)的向上擴(kuò)展帶寬以及許多客戶端上實(shí)現(xiàn)的向外擴(kuò)展吞吐量。

裸機(jī),runC和Kata之間的磁盤I/O帶寬比較。在所有情況下,使用runC容器實(shí)現(xiàn)的帶寬都略低于裸機(jī)。但是,Kata容器的性能通常要差得多,當(dāng)有64個(gè)客戶端時(shí),其獲得的裸機(jī)讀取帶寬大約為15%,隨機(jī)寫入帶寬的比例要小得多。唯一的例外是使用64個(gè)客戶端的順序?qū)懭肭闆r,其中Kata容器的性能好于裸機(jī)方案約25%。

提交延遲累積分布函數(shù)(CDF)

在對(duì)延遲敏感的工作負(fù)載中,I/O延遲可能占主導(dǎo)地位。I/O操作提交延遲按對(duì)數(shù)比例繪制,以適應(yīng)非常廣泛的數(shù)據(jù)點(diǎn)。

分別針對(duì)1、8和64個(gè)客戶端的裸機(jī),runC和Kata容器環(huán)境之間的提交延遲CDF的比較。與將它們作為runC容器運(yùn)行相比,在裸機(jī)中運(yùn)行fio作業(yè)之間存在微小差異。但是,將裸機(jī)與Kata容器進(jìn)行比較,在所有情況下的開銷都非常大。

Number of clients >   1   8   64  
Mode Scenario 50% 99% 50% 99% 50% 99%
sequential read bare 1581 2670 2416 3378 14532 47095
runC 2007 2506 2391 3907 15062 46022  
Kata 4112 4620 12648 46464 86409 563806  
random read bare 970 2342 2580 3305 14935 43884
runC 1155 2277 2506 3856 15378 42229  
Kata 5472 6586 13517 31080 109805 314277  
sequential write bare 1011 1728 2592 15023 3730 258834
runC 1011 1990 2547 14892 4308 233832  
Kata 3948 4882 4102 6160 14821 190742  
random write bare 1269 2023 3698 11616 19722 159285
runC 1286 1957 3928 11796 19374 151756  
Kata 4358 5275 4566 14254 1780559 15343845  

該表總結(jié)了與之前顯示的數(shù)字相對(duì)應(yīng)的50%和99%的提交延遲(以μs為單位)。*

展望未來(lái)

在這種I/O密集型方案中,Kata容器尚未達(dá)到傳統(tǒng)容器的性能。

從結(jié)果可以明顯看出,在裸機(jī)、runC容器和Kata容器之間進(jìn)行選擇時(shí),需要權(quán)衡取舍。盡管runC容器為大多數(shù)用例提供了更完善的考量,但它們?nèi)匀皇怪鳈C(jī)內(nèi)核易于受到系統(tǒng)調(diào)用接口作為攻擊面的利用。Kata容器提供了硬件支持的隔離,但是目前存在巨大的性能開銷,尤其是對(duì)于磁盤I/O綁定操作。

Kata的發(fā)展路線圖和發(fā)展速度擁有堅(jiān)實(shí)的基礎(chǔ)以及樂(lè)觀的前景。Kata團(tuán)隊(duì)已經(jīng)意識(shí)到使用virtio-9p作為存儲(chǔ)驅(qū)動(dòng)程序在主機(jī)和來(lái)賓VM之間共享路徑的性能缺陷。

Kata版本1.7(將于2019年5月15日發(fā)布)預(yù)計(jì)將附帶virtio fs的實(shí)驗(yàn)支持,該版本有望改善I/O性能問(wèn)題。初步結(jié)果令人鼓舞,其他已發(fā)布的基準(zhǔn)測(cè)試報(bào)告顯示,virtio fs驅(qū)動(dòng)程序的磁盤I/O帶寬比virtio-9p提高了2到8倍。當(dāng)新功能可用時(shí),我們將重復(fù)我們的測(cè)試以及分析。

原文: https://www.stackhpc.com/kata-io-1.html

 

責(zé)任編輯:武曉燕 來(lái)源: 新鈦云服
相關(guān)推薦

2022-09-16 08:44:44

存儲(chǔ)卷I/O帶寬

2019-12-10 08:00:46

Kata容器Linux

2022-04-23 16:30:22

Linux磁盤性能

2024-11-29 09:47:44

AprEndpoin組件

2023-07-12 08:24:19

Java NIO通道

2018-03-28 08:52:53

阻塞非阻塞I

2011-02-25 09:16:00

SQLSQL Server IO

2013-07-16 16:46:28

云計(jì)算

2014-07-28 16:47:41

linux性能

2018-11-05 11:20:54

緩沖IO

2017-02-09 09:00:14

Linux IO調(diào)度器

2019-12-02 09:45:45

Linux IO系統(tǒng)

2017-09-01 12:26:18

Linux調(diào)度器系統(tǒng)

2024-10-17 16:47:05

磁盤I/O計(jì)算機(jī)

2017-10-31 10:32:44

2011-01-14 09:25:28

LinuxIO機(jī)制

2024-02-02 11:24:00

I/O高并發(fā)場(chǎng)景

2011-02-22 10:37:00

SQL ServerSQL Server 性能診斷

2018-10-08 15:22:36

IO模型

2025-02-03 09:53:42

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)