全部產品
Search
文件中心

Alibaba Cloud Linux:SWAP功能風險說明及配置方法

更新時間:Aug 03, 2024

SWAP用於暫時儲存不活動記憶體頁的機制。當系統記憶體不足時,系統可以將不再活動的記憶體資料存放區到SWAP空間中,從而釋放記憶體用於其他正在啟動並執行進程。本文介紹在Alibaba Cloud Linux系統中配置SWAP功能的風險說明,您可根據實際需求決定是否開啟SWAP功能。

Swappiness參數說明

說明

在Alibaba Cloud Linux系統執行個體中,Swappiness的預設值為0。

Swappiness是控制SWAP空間使用傾向性的核心參數。

  • 0:表示盡量使用實體記憶體而不使用SWAP分區。

  • 100:表示盡量使用SWAP分區而不使用物理參數。

如果Swappiness值設定過大(接近或等於100),可能會導致在記憶體充裕的情況下仍然使用SWAP,進而導致系統效能下降和記憶體訪問延遲增加。

SWAP配置風險說明

  • 宿主機配置SWAP的風險:

    系統記憶體壓力過高時,系統可能會頻繁地交換記憶體。由於從磁碟讀取資料比從記憶體中讀取資料慢,SWAP的頻繁使用會導致高延時,從而影響應用程式的效能和系統整體的穩定性。

  • 容器配置SWAP的風險:

    • 資源分派複雜性:在容器化環境中,資源管理通常集中在宿主機層面。如果容器可以自由地配置和使用SWAP,可能導致資源管理複雜,影響其他容器的穩定性。

    • 資源競爭:如果多個容器都在使用宿主機的SWAP,可能導致資源競爭,影響它們的效能和穩定性。尤其是當多個容器同時進入SWAP狀態,會對磁碟的I/O造成巨大壓力。

    • 高延時和低效能:容器使用SWAP會導致延時增加和效能下降,尤其是對於I/O密集型的應用程式。

配置SWAP

一般不建議在容器內部直接配置SWAP,而是通過宿主機或容器啟動參數來管理與配置SWAP,這是因為容器依賴於宿主機的核心來管理資源。相比於在容器內部配置SWAP,利用宿主機的核心管理SWAP資源更為高效和統一。在容器內部配置SWAP可能會增加不必要的複雜性和難以管理,例如難以統一監控和統一調整SWAP配置。

宿主機配置SWAP

具體操作,請參見Linux執行個體SWAP分區的配置和常見問題處理

容器啟動參數配置SWAP

在啟動容器時,通過memorymemory-swap參數控制容器的記憶體和SWAP使用方式。

  • --memory=<value>:限制容器能夠使用的實體記憶體。

  • --memory-swap=<value>:設定容器可以使用的總記憶體(包括實體記憶體和SWAP)。如果設定值大於實體記憶體的限制,超出部分將分配到SWAP。

以C代碼為例,設定總記憶體為2 GB,容器的實體記憶體為1 GB,SWAP記憶體為1 GB。

docker run --memory=1g --memory-swap=2g my_container