導航:首頁 > 源碼編譯 > 容器編譯為什麼比物理機編譯慢

容器編譯為什麼比物理機編譯慢

發布時間:2022-05-06 01:08:42

⑴ 傳統虛擬機和Docker容器在性能上的區別

IBM研究部門發表了一篇關於容器和虛擬機環境性能比較的論文。這篇論文使用了Docker和KVM作為研究對象,闡述了Docker使用NAT或AUFS時的開銷,並且質疑了在虛擬機上運行容器的實踐方法。
論文作者在原生、容器和虛擬化環境中運行了CPU、內存、網路和I/O的benchmark。其中,分別使用KVM和Docker作為虛擬化和容器技術的代表。Benchmark也包含了對不同環境下Redis和MySQL負載的采樣。通過小數據包和多客戶端,Redis側重於網路棧的性能。而MySQL側重於內存,網路和文件系統的性能。
結果顯示,在每一項測試中,Docker的性能等同於或超出KVM的性能。在CPU和內存性能方面,KVM和Docker都引入了明顯的,但可略不計的開銷。但是,對於I/O密集型的應用,兩者都需要進行調整以減少開銷帶來的影響。
當使用AUFS存儲文件時,Docker的性能會降低。而相比之下,使用卷(volume)能夠獲得更好的性能。卷是一種專門設計的目錄,存在於一個或多個容器內。通過這種目錄能夠繞過聯合文件系統(union file system)。這樣它就沒有了存儲後端可能帶來的開銷。默認的AUFS後端會引起顯著的I/O開銷,特別是當有多層目錄深度嵌套的時候。
Docker的默認網路選項,--net=bridge,由於NAT會重寫數據包,也引入了性能開銷。當數據包收發率變高時,這種開銷會變得很明顯。可以通過使用--net=host改善網路的性能。這個選項告訴Docker不要為容器創建一個獨立的網路棧,並允許容器擁有宿主機網路介面的完全訪問許可權。但是,使用這個選項時要小心。因為它允許容器內的進程像其他根進程一樣,使用數值較小的埠;並允許容器內的進程訪問本地網路服務,如D-bus。這使得容器內的進程可以做一些預料之外的事情,如重啟宿主機。
盡管自誕生以來,KVM性能有了相當大的提升,但它仍然不適用於對延時敏感或高I/O訪問率的工作負載。因為每次I/O操作,它都會增加一些開銷。這個開銷對於耗時較少的I/O操作是有意義的,但對於耗時較長的I/O操作是可以忽略的。
根據這些測試結果,論文對使用虛擬機實現IaaS的方法提出了質疑:
傳統觀點(在某種程度上,這種觀點存在於年輕的雲生態圈中)認為使用虛擬機實現IaaS,使用容器實現PaaS。我們沒有找到技術方面的理由來證明必須這么做,尤其是證明容器基於IaaS能提供更好的性能或者更容易部署。由於容器提供了控制手段,並在不使用虛擬機的情況下能達到物理機的性能,所以它能夠消除IaaS和非虛擬化的伺服器間的差異。

盡管在虛擬環境中運行容器是一種常見的實踐方法,但是論文建議直接在物理的linux伺服器上運行它們。否則,相比於直接運行在非虛擬化的Linux上的方法,由於虛擬機的性能開銷,這種實踐方法不會得到任何額外的好處。

編譯器編譯的時間, 要比解釋語言運行的速度慢嗎為什麼

只能說說通常的情況,因為情況比較復雜
一般來說,編譯的語言比解釋性語言運行的速度塊
不過編譯時間的話就很難說了,和編譯器本身有關系
解釋語言可以不用專成 二進制代碼直接運行

⑶ Docker容器是什麼它比虛擬機強在何處

Docker容器是一個開源的應用容器引擎,可以讓開發者用統一的形式打包其自身的應用,然後包裝到一個可以移植的容器中,隨後發布到任何可以安裝Docker引擎的伺服器上(比如主流的Linux機器或者是Windows機器),當然也可以實現虛擬化。Docker容器幾乎沒有性能開銷,可以很容易的在機器和數據中心運行,其最大的特色就是不依賴任何系統,框架甚至是語言。
由於容器是進程級的,相比於虛擬機有著很多的優勢
一:啟動速度快:由於容器裡面的應用軟體,直接就是底層系統的一個進程,而不是虛擬機內部的進程。所以啟動容器時,不是啟動一整個操作系統,速度就快了很多。
二:資源佔用少:相比於虛擬機而言,容器只佔用需要的資源,不會去佔有無效的資源,而虛擬機則是一個完整的操作系統,不可避免的佔用了所有資源。
三:體積小,輕量級:容器只需要包含用到的組件,對比於虛擬機,容器文件要比虛擬機小很多。
四:方便移動:容器技術最重要的就是為不同的主機上運行服務一個輕便,一致的格式。容器的格式更加標准化且方便客戶對工作負載的遷移,有效避免單一的平台提供商。

⑷ 為什麼我的C++編譯器運行起來比其他電腦運行起來慢啊!大家幫幫忙把!~~~~~~~~~

1. 開的程序太多,關掉佔用資源的一些程序,比如瀏覽器,播放器等。
2. 升級你的C++編譯器的版本。
3. 卸載然後重新安裝你的C++編譯器。
4. 重新安裝操作系統。
5. 升級你的電腦。

⑸ 容器與虛擬機的區別

1.容器技術簡介

對於容器,它首先是一個相對獨立的運行環境,在這一點有點類似於虛擬機,但是不像虛擬機那樣徹底。在容器內,應該最小化其對外界的影響,比如不能在容器內把宿主機上的資源全部消耗,這就是資源控制。

2.容器與虛擬機的區別

容器和虛擬機之間的主要區別在於虛擬化層的位置和操作系統資源的使用方式。
1
1
容器與虛擬機擁有著類似的使命:對應用程序及其關聯性進行隔離,從而構建起一套能夠隨處運行的自容納單元。此外,容器與虛擬機還擺脫了對物理硬體的需求,允許我們更為高效地使用計算資源,從而提升能源效率與成本效益。

虛擬機會將虛擬硬體、內核(即操作系統)以及用戶空間打包在新虛擬機當中,虛擬機能夠利用「虛擬機管理程序」運行在物理設備之上。虛擬機依賴於hypervisor,其通常被安裝在「裸金屬」系統硬體之上,這導致hypervisor在某些方面被認為是一種操作系統。一旦 hypervisor安裝完成, 就可以從系統可用計算資源當中分配虛擬機實例了,每台虛擬機都能夠獲得唯一的操作系統和負載(應用程序)。簡言之,虛擬機先需要虛擬一個物理環境,然後構建一個完整的操作系統,再搭建一層Runtime,然後供應用程序運行。

對於容器環境來說,不需要安裝主機操作系統,直接將容器層(比如LXC或libcontainer)安裝在主機操作系統(通常是Linux變種)之上。在安裝完容器層之後,就可以從系統可用計算資源當中分配容器實例了,並且企業應用可以被部署在容器當中。但是,每個容器化應用都會共享相同的操作系統(單個主機操作系統)。容器可以看成一個裝好了一組特定應用的虛擬機,它直接利用了宿主機的內核,抽象層比虛擬機更少,更加輕量化,啟動速度極快。

相比於虛擬機,容器擁有更高的資源使用效率,因為它並不需要為每個應用分配單獨的操作系統——實例規模更小、創建和遷移速度也更快。這意味相比於虛擬機,單個操作系統能夠承載更多的容器。雲提供商十分熱衷於容器技術,因為在相同的硬體設備當中,可以部署數量更多的容器實例。此外,容器易於遷移,但是只能被遷移到具有兼容操作系統內核的其他伺服器當中,這樣就會給遷移選擇帶來限制。

因為容器不像虛擬機那樣同樣對內核或者虛擬硬體進行打包,所以每套容器都擁有自己的隔離化用戶空間,從而使得多套容器能夠運行在同一主機系統之上。我們可以看到全部操作系統層級的架構都可實現跨容器共享,惟一需要獨立構建的就是二進制文件與庫。正因為如此,容器才擁有極為出色的輕量化特性。

對Docker稍有接觸的人應該都見過下圖,無需更多解釋,Docker減少Guest OS這一層級,所以更輕量和更高性能。
docker虛擬機區別


3.深層區別:
docker虛擬機區別

更新:Docker現在已經支持windows平台,所以上面的Windows支持一欄可以忽略。

⑹ 為什麼C++編譯比C語言編譯慢很多

C++特性比C多,例如面向對象,語法比C復雜,例如重載,默認參數等,此外標准庫也比C庫強大,當然對編譯器的要求也就更高。C++編譯器相對於C編譯器要做的事情多很多,所以編譯起來相對較慢啦。

⑺ 對容器的(頻繁)操作c++為什麼比java的要慢很多

一方面,這是C++在設計過程中考慮了太多的通用性(比如允許自定義內存分配器)導致效率受影響;另一方面,你使用的方式map<int,map<int,float> > m_map導致了大量的數據復制,改成map<int,map<int,float>*> m_map應該會有明顯的改善。

⑻ 虛擬linux為什麼比物理linux慢

首先確認一下你的cpu在bios里有沒有開啟虛擬化,虛擬機最新的技術都是可以和cpu直接配合的,這需要cpu廠商的支持,現在新的cpu都支持了,虛擬機的系統就像真實系統一樣強大,如果虛擬機總比真實系統慢,那虛擬機就不能用在生產環境了。你虛擬機運行在win7上本身就耗了很大的資源,肯定會慢。還有可能就是你虛擬機和計算機結合的不夠好,虛擬機要走向成熟還有很長的路要走

⑼ 如何看待docker容器與虛擬機之間的比較

如何看待docker容器與虛擬機之間的比較
題主應該是不知道docker的意義,而不是否認這些技術優勢吧。我試著分析一下意義:
1、啟動快大部分情況下隻影響了用戶體驗,但是對於負責大規模部署的運維來講,意義還是挺大。一個東西上線是要一天,還是一個小時,情況是很不一樣的。
2、資源利用高的意思是,虛擬化會消耗資源比容器多。不太准確地說,經過虛擬化層,留給用戶的資源只剩90%,而容器可以剩下99%。對於雲的意義直觀來講就是可以省錢啊。
3、性能開銷的意義在於,由於存在一個虛擬化層,即使虛擬機獨占所有的物理資源,但跑在裡面的程序性能還是比物理機慢,這方面應該cpu內存還好一點,存儲和其他外設就比較糟糕了。而容器只是一個進程,性能與物理機幾乎一樣。普通用戶沒什麼感覺,但要求稍高一點的用戶就有問題了

閱讀全文

與容器編譯為什麼比物理機編譯慢相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:579
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251
哈夫曼編碼數據壓縮 瀏覽:426
鎖定伺服器是什麼意思 瀏覽:385
場景檢測演算法 瀏覽:617
解壓手機軟體觸屏 瀏覽:350