本段的最後給出一段基於 Perl 的例子代碼,在 AIX系統5.3 和 6.1 上測試通過,可以偵測當前的AIX系統環境和 CPU 的類型和數量。這段代碼首先運行系統命令 oslevel 得到當前系統的版本,如果是 AIX6.1 則運行命令 lparstat 判斷當前系統是否為 WPAR。
無論 AIX 系統的版本如何,都加參數 -i 運行命令 lparstat 來獲得分區的個數,並以此判斷是否使用了微分區技術。最後調用命令 prtconf 輸出 CPU 的一些參數。
該段代碼可以幫助用戶快速了解當前環境,尤其適用於工作環境復雜或頻繁變更的場景。需要指出的是對於使用了微分區技術的系統,代碼的最後輸出的是虛擬處理器的數量。需要了解AIX系統中物理處理器和邏輯處理器狀態的用戶,可以參閱本文其他段落加以補充。
清單 4. 獲得當前的AIX系統環境和 CPU 的類型和數量的代碼示例
- # WPAR 僅存在於 AIX 6.1 系統
- my $oslevel = `oslevel`;
- if ($oslevel =~ m/6\.1/)
- {
- # 在 WPAR 中不帶參數運行 lparstat 命令只返回警告信息
- my $output = `lparstat`;
- if ($output =~ m/The output is applicable only to the Global Environment/)
- {
- print "This machine is one WPAR with following CPU assigned.\n";
- system ("prtconf | grep Processor");
- exit 0;
- }
- }
- # 使用– i 參數列出詳細的配置信息
- my @outputs = `lparstat -i`;
- foreach my $line (@outputs)
- {
- # 解析命令輸出並得到分區個數
- if ($line !~ m/Partition Number/) {next;}
- my ($blank, $partition_num) = split /Partition Number\s+:\s/, $line;
- chomp $partition_num;
- if ($partition_num eq '-') # full system 環境沒有劃分微分區
- {
- print "This machine is one full system without LPARs. The system has following
- physical CPUs installed.\n";
- }elsif ($partition_num > 1) # 如果存在多於一個的分區,該AIX系統使用了微分區技術
- {
- print "This machine is one LPAR with virtual following CPUs installed.
- To check the assignment of physical CPU, please log on HMC or AMM.\n";
- }else
- {
- print "Can not decide whether current environment is one LPAR or not.
- Please check HMC or AMM to decide this.\n";
- }
- }
- # 打印處理器本身的參數
- system ("prtconf | grep Processor");
- exit 0;
這樣,在AIX系統中獲得處理器資源的知識我們就講解完畢。