日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Alibaba Cloud Linux系統中與透明大頁THP相關的性能調優方法

透明大頁THP(Transparent Huge Pages)是Linux內核中的一個通用特性,它可以自動將小頁面(通常為4 KB)合并成大頁面(通常為2 MB或更大),可以減少內存訪問頁表項PTE(Page Table Entries)大小和訪問次數,同時減輕了轉譯后備緩沖器TLB(Translation Lookaside Buffer)緩存的壓力,提高內存訪問的效率。本文主要介紹在Alibaba Cloud Linux系統中如何通過透明大頁THP功能來提升系統的性能。

THP相關配置說明

在Alibaba Cloud Linux 2的4.19.81-17.2及更早的內核版本中,透明大頁THP默認配置為madvise,即限定開啟透明大頁THP的功能。這一設置與其他主流操作系統不一致,例如Red Hat Enterprise Linux 7、CentOS 7、Amazon Linux 2等。為盡量保證與主流操作系統默認場景的兼容性,從Alibaba Cloud Linux 2的4.19.91-18內核版本開始,透明大頁THP默認配置為always,即系統全局開啟THP功能。

全局配置

在Alibaba Cloud Linux內核中,透明大頁THP的配置文件位于/sys/kernel/mm/transparent_hugepage/enabled,可選的配置項如下:

  • always

    系統全局開啟透明大頁THP功能。

  • never

    系統全局關閉透明大頁THP功能。

  • madvise

    僅在通過madvise()系統調用,并且設置了MADV_HUGEPAGE標記的內存區域中開啟透明大頁THP功能。

    說明

    應用程序使用 MADV_HUGEPAGE 標記時,內核就會知道應用程序希望使用大頁進行內存分配。

碎片整理配置

除了上述全局配置外,還有下列兩個與透明大頁THP相關的碎片整理配置。

  • 透明大頁THP碎片整理:透明大頁的碎片整理可以合并系統中分散的小頁面,以創建更大的頁面,以減少內存碎片化并提高性能。

  • khugepaged碎片整理:khugepaged是一個內核線程,主要負責管理和整理大頁,以減少內存碎片化并提高性能。它會監視系統中的大頁面,當發現分散的大頁時,會嘗試將它們合并成更大的頁,以提高內存利用率和性能。

khugepaged碎片整理主要關注管理和整理已經存在的大頁面,而透明大頁THP的碎片整理是指系統嘗試合并分散的小頁面以創建更大的頁面。兩者都旨在減少內存碎片化,并通過合并頁面來提高內存利用率和性能。二者詳細說明如下:

透明大頁THP碎片整理

發生缺頁異常(Page Fault)時,該功能可控制內存分別進行直接回收(Direct Reclaim)、后臺回收(Background Reclaim)、直接整理(Direct Compaction)、后臺整理(Background Compaction)的行為。開啟或關閉該功能的配置文件路徑為/sys/kernel/mm/transparent_hugepage/defrag,可選的配置項如下:

  • always

    當系統分配不出透明大頁時,暫停內存分配行為,總是等待系統進行內存的直接回收和內存的直接整理。內存回收和整理結束后,如果存在足夠的連續空閑內存,則繼續分配透明大頁。

  • defer

    當系統分配不出透明大頁時,轉為分配普通的4 KB頁。同時喚醒kswapd內核守護進程以進行內存的后臺回收,喚醒kcompactd內核守護進程以進行內存的后臺整理。一段時間后,如果存在足夠的連續空閑內存,khugepaged內核守護進程將此前分配的4 KB頁合并為2 MB的透明大頁。

  • madvise

    僅在通過madvise()系統調用,并且設置了MADV_HUGEPAGE標記的內存區域中,內存分配行為等同于always。其余部分的內存分配行為保持為:發生缺頁異常時,轉為分配普通的4 KB頁。

    說明

    在Alibaba Cloud Linux 2的4.19.81-17.2及之后的內核版本中,系統默認設置為madvise

  • defer+madvise

    僅在通過madvise()系統調用,并且設置了MADV_HUGEPAGE標記的內存區域中,內存分配行為等同于always。其余部分的內存分配行為保持為defer

  • never

    禁止碎片整理。

khugepaged碎片整理

與khugepaged碎片整理功能相關的重要配置如下:

  • 功能開關

    功能開關的配置文件路徑為/sys/kernel/mm/transparent_hugepage/khugepaged/defrag。可選的配置項如下:

    • 0

      關閉khugepaged碎片整理功能。

    • 1

      配置為1時,khugepaged內核守護進程會在系統空閑時周期性喚醒,嘗試將連續的4 KB頁合并成2 MB的透明大頁。

      說明
      • 在Alibaba Cloud Linux 2的4.19.91-18及之后的內核版本中,系統默認設置為1

      • 由于該操作會在內存路徑中加鎖,并且khugepaged內核守護進程可能會在錯誤的時間啟動掃描和轉換大頁,因此存在影響應用性能的可能性。

  • 重試間隔

    重試間隔是指當透明大頁THP分配失敗時,khugepaged內核守護進程進行下一次大頁分配前需要等待的時間,來避免短時間內連續發生大頁分配失敗。默認值為60000,單位為毫秒,即默認等待60秒。配置文件路徑為/sys/kernel/mm/transparent_hugepage/khugepaged/alloc_sleep_millisecs

  • 喚醒間隔

    喚醒間隔是指khugepaged內核守護進程每次喚醒的時間間隔。默認值為10000,單位為毫秒,即默認每10秒喚醒一次。配置文件路徑為/sys/kernel/mm/transparent_hugepage/khugepaged/scan_sleep_millisecs

  • 掃描頁數

    掃描頁數是指khugepaged內核守護進程每次喚醒后掃描的頁數。默認值為4096個頁。配置文件路徑為/sys/kernel/mm/transparent_hugepage/khugepaged/pages_to_scan

THP配置建議

使用THP的影響

透明大頁THP能增加轉譯后備緩沖器TLB命中的幾率,減少內存訪問頁表項PTE時的開銷,使系統獲得性能提升。透明大頁THP試圖進一步釋放運維壓力,不需要應用程序進行特殊修改或配置,使用戶在無感知的情況下享受到性能的提升。然而,透明大頁THP的資源是有限的,當系統達到透明大頁THP分配的瓶頸時,需要使用一系列機制來保證系統的正常運行。在這種情況下,系統的默認配置不一定適用于所有用戶場景。而且默認配置對于許多應用來說可能造成系統性能下降,例如:

  • 如果透明大頁THP的碎片整理開關設置為always,內存緊張時會和普通4 KB頁一樣,出現內存的直接回收或內存的直接整理,這兩個操作均是同步等待的操作,會造成系統性能下降。

  • 如果khugepaged碎片整理的開關設置為1,在khugepaged內核守護進程進行內存合并操作時,會在內存路徑中加鎖。如果khugepaged碎片整理在錯誤的時間被觸發,會對內存敏感型應用造成性能影響。

  • 如果保持開啟透明大頁THP,同時關閉上述兩個碎片整理的開關,則內存分配過程相較于4 KB頁可能會更快地消耗完空閑頁資源,然后系統開始進入內存回收和內存整理的過程,反而更早的出現系統性能下降。

配置建議

綜上所述,透明大頁THP對系統性能的影響,不能一概而論。需要根據業務、系統、應用的實際情況進行調整,下面列舉常見的示例場景供您參考:

重要

請您在修改任何配置文件之前,備份相關配置文件或者創建云盤快照備份數據,避免數據丟失。

  • 如果您對系統內核有足夠信心,建議您參考下列命令,開啟試驗性開關(defer+madvise),使內核的內存后臺回收(kswapd內核守護進程)、內存的后臺整理(kcompactd內核守護進程)與khugepaged內核守護進程盡可能協同工作,在內存整理和性能平穩之間找到平衡點。

    sudo bash -c "echo 'defer+madvise' > /sys/kernel/mm/transparent_hugepage/defrag"
  • 如果您發現系統中的khugepaged內核守護進程達到或接近100%的CPU使用率時,可以考慮增加khugepaged內核守護進程喚醒的間隔時間,比如修改為30秒,示例命令如下。

    sudo sh -c 'echo 30000 > /sys/kernel/mm/transparent_hugepage/khugepaged/scan_sleep_millisecs'

    或者直接關閉khugepaged內核守護進程,示例命令如下。

    sudo sh -c 'echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag'
  • 在特殊場景下,例如,數據庫應用有大量訪問請求的場景、大量延遲敏感型應用場景或大量短生命周期的內存分配(Short-lived Allocation)場景,如果系統的穩定性比性能更重要,建議關閉透明大頁THP功能。在系統運行時關閉透明大頁THP的示例命令如下。

    sudo sh -c 'echo "never" > /sys/kernel/mm/transparent_hugepage/enabled'
    說明

    該命令僅在本次系統運行期間有效,系統重啟后透明大頁THP功能仍會開啟。如果需要持久關閉透明大頁THP功能,需以root用戶依次執行下列命令,在內核啟動參數中添加關閉透明大頁THP功能的參數。

    sudo grubby --args="transparent_hugepage=never" --update-kernel="/boot/vmlinuz-$(uname -r)"
    sudo reboot

查看THP的使用情況

在系統中查看透明大頁THP的使用情況主要分為系統級別和進程級別,具體說明如下:

  • 系統級別

    在系統級別上,透明大頁的相關參數和配置選項可以影響整個系統中的所有進程。在系統中執行下列示例命令,查看透明大頁THP的使用情況。

    cat /proc/meminfo | grep AnonHugePages

    系統顯示的示例如下。

    AnonHugePages:    614400 kB
    說明

    如果系統返回非零值,則說明系統中使用了一定數量的透明大頁THP。

  • 進程級別:在進程級別,可以使用madvise()系統調用以及MADV_HUGEPAGE標記來控制透明大頁的使用。這種方式允許應用程序有選擇地使用透明大頁功能,而不會影響其他進程或整個系統。在系統中執行下列示例命令,查看某個進程使用的透明大頁THP。

    sudo cat /proc/<PID>/smaps | grep AnonHugePages
    說明

    <PID>需替換為實際的進程的PID。

    系統顯示的示例如下。

    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB

相關文檔

  • 您可以通過透明大頁THP的介紹了解更多關于透明大頁THP的功能說明和風險。

  • 代碼大頁是一種基于透明大頁THP相同的整合機制,將連續的代碼片段映射到大頁(通常是2 MB或更大)的內存區域的機制,可以減少TLB缺失的概率。您也可以通過Alibaba Cloud Linux提供的代碼大頁功能來提升系統的性能。更多信息,請參見代碼大頁

  • Red Hat Enterprise Linux 7通過透明大頁THP性能調優的方法,請參見RHEL 7性能調試文檔