本段的***给出一段基于 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系统中获得处理器资源的知识我们就讲解完毕。
【编辑推荐】