動態內存(動態模擬 Memory)是一種計算機內存管理技術,允許用戶在虛擬操作系統啟動時指定所需的隨機存取存儲器(RAM)容量,并最大限度地利用平臺可用的系統內存。
定義
動態內存是Integrity VM的一項可選功能,通過它可以調整虛擬機使用的物理內存量,無需重新引導虛擬機。在Integrity VM的特定版本中,動態內存僅適用于運行HP-UX的虛擬機。這一功能使得Serviceguard節點等虛擬機能夠在多個Serviceguard程序包中充當備用服務器。當程序包發生故障轉移時,可以在故障轉移前、轉移中或轉移后調整虛擬機的內存,以適應程序包的需求。為了使用動態內存,虛擬機必須安裝虛擬機管理軟件。
配置動態內存
默認情況下,動態內存并未啟用。若要配置虛擬機以使用動態內存,可以通過hpvmcreate、hpvmmodify或hpvmclone命令進行設置。其中-x選項用于設置初始值。此外,還可以在引導過程的早期階段配置虛擬機,以減少其內存大小,從而在VM Host系統上保持可用性并降低內存開銷。為此,可以使用-x選項啟用相關功能。在同一命令行上可以提供多個動態內存關鍵字。例如,要啟用動態內存并將名為compass1的虛擬機配置為在引導進程中減少其大小,可以輸入以下命令:
查看動態內存
可以使用Integrity VM的標準命令,為每個虛擬機顯示動態內存參數和狀態。例如,對于名為compass1的虛擬機,可以使用hpvmstatus命令顯示以下動態內存信息:
管理動態內存
默認情況下,從虛擬機管理動態內存的功能處于關閉狀態,必須通過VM Host啟用。如果沒有啟用此功能,雖然可以顯示動態內存信息,但無法更改內存大小。可以使用hpvmcreate、hpvmmodify或hpvmclone命令,并包含-x 動態模擬_memory_control選項。指定1作為該選項的參數。例如,在VM Host系統中,可以輸入以下命令在名為compass1的虛擬機上啟用動態內存控件:
故障排除
動態內存限制
使用動態內存有一些限制條件。虛擬機的大小不能超過其初始引導大小。如果虛擬機內存已經碎片化,嘗試減少虛擬機大小可能會失敗或需要較長時間。增加虛擬機大小需要VM Host上有足夠的可用內存。如果VM Host內存不足,該操作可能需要較長時間,并可能失敗。如果ram_target和ram_dyn_target_start的值不在ram_dyn_min和ram_dyn_max值之間,將會收到一條警告。
VM Host資源注意事項
HP-UX支持“大型頁面”內存管理功能,可用于提高性能。Integrity VM可以通過確保在虛擬機啟動時分配容量最大的可用頁面來實現此功能。一旦分配并鎖定這些頁面之后,將無法更改其大小。此限制可使大型頁面的碎片降至最低。該功能會限制可在VM Host系統上運行的軟件類型。如果VM Host系統支持虛擬機以外的其他工作負荷,則大型頁面可能會產生碎片,并可能導致新啟動的虛擬機性能降低。動態內存增加了VM Host內存產生碎片的可能性。動態內存的當前實現方式可釋放向虛擬機分配的內存部分。必須以大型連續塊為單位執行這些操作;否則,減少虛擬機大小會使為該虛擬機分配的VM Host內存產生碎片。可通過軟件防止產生此潛在碎片,即以物理連續內存的最小塊大小64 MB的倍數為單位減少虛擬機大小。
Guest虛擬機資源注意事項
運行某一工作負荷的系統正常運行期間,大型頁面可能會逐漸產生碎片。VM Host和運行HP-UX操作系統的虛擬機都會出現這種情況。如果虛擬機內存產生碎片,動態內存子系統將無法減少guest虛擬機的大小。這是因為此減少大小的操作使用最小塊大小。如果動態內存無法刪除至少64 MB的物理連續guest虛擬機內存,則不會減少大小。指定足夠的Guest虛擬機內存如果將ram_dyn_target_start的值設置得過小,則guest虛擬機操作系統可能會在引導時掛起或崩潰。此種情況下,guest虛擬機無法訪問足夠的內存量。通常,降低分配給HP-UX guest虛擬機的內存時降幅不能超過其分配的內存大小的75%。對于配置了2 GB內存的虛擬機,其內存降低幅度不能超過50%。如果guest虛擬機在引導時崩潰,請在VM Host上使用hpvmmodify命令增大ram_dyn_target_start參數的值。例如,要增加名為compass1的guest虛擬機的內存大小,請在VM Host上輸入以下命令:
設置該參數之后,請重新引導該guest虛擬機。如果guest虛擬機掛起,請在VM Host上使用hpvmstatus命令查看guest虛擬機上的內存統計信息。例如:
該問題的一個指示為可用內存量過小或為零,并且內存壓力值較大(100)。如果出現這些指示,請在VM Host上使用hpvmmodify命令增加guest虛擬機的內存大小。然后,按正常方式引導該guest虛擬機。實際內存分配可能不相同如果指定的ram_target或ram_dyn_target_start參數的值所更改的內存大小不是64 MB的倍數,則會重置目標值。例如,如果指定6 GB的內存,HP-UX guest虛擬機實際可訪問6135 MB的內存。如果嘗試將內存大小設置為2048 MB,則實際刪除的內存大小為4087 MB。由于它不是64 MB的倍數,因此會將目標內存大小重置為2103 MB。在Guest虛擬機和VM Host上啟用動態內存在VM Host系統中使用動態內存參數之前,必須在guest虛擬機上安裝guest虛擬機管理軟件。例如,如果未安裝guest虛擬機管理軟件,hpvmstatus命令將顯示以下內容:
如果嘗試從VM Host修改guest虛擬機的動態內存,則會顯示下列錯誤:
如果嘗試從guest虛擬機修改動態內存,則會顯示下列錯誤:
在升級Integrity VM時升級Guest虛擬機工具包動態內存軟件包含兩個組件:VM Host支持和HP-UX guest虛擬機支持。要使動態內存正常運行,以上兩個組件的版本級別必須相同。升級Integrity VM時,還必須在guest虛擬機上安裝新的guest虛擬機工具包(如果不再支持guest虛擬機操作系統,則應同時升級該操作系統)。在此升級過程中,動態內存可能無法運行。如果版本不匹配,啟動guest虛擬機時會向VM Host的syslog文件(/var/adm/syslog/syslog.log)寫入一條消息。例如:
此示例表明編號為5的虛擬機上的guest虛擬機管理軟件工具包已過期。要確定編號為5的虛擬機,請使用hpvmstatus命令。在以下示例中,guest虛擬機5名為dale:
參考資料 >
C語言(15)----動態內存講解.騰訊云.2024-11-04