スペースモラトリアムノカミサマ

日記+コメント付きブックマーク+他人にも役に立つかもしれない情報など。
(更新情報: RSS(ツッコミ付き) / RSS(ツッコミ抜き) / LIRS)

最近の TrackBack:
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|06|07|08|09|10|
2011|01|02|03|07|10|11|
2012|02|03|04|07|08|09|
2013|01|06|07|
2014|02|08|09|11|
2015|09|
2016|01|05|
2017|07|
2018|05|07|
2019|07|
2020|08|09|10|12|
2021|05|
2022|03|

2008/04/08

_ [システム運用][Perl] Perl で Load Average メモ

まぁ、システムっても、uptime 結果をこちょこちょと文字列操作して、直近1分の Load Average の値を取得してるだけなんですけどね。

具体的には↓な感じ。

my $exe_uptime= `/usr/bin/uptime`;
(undef, undef, undef, my $strtmp, undef) = split (/,/, $exe_uptime);
(undef, my $LA1) = split (/:/, $strtmp);
$LA1=~ s/\s+//;

[Load Average 48 とか、どんだけー。より引用]

直近の Load Average を知りたいだけなら、uptime を叩くより /proc/loadavg を直接読んだ方が簡潔で良さげ。

open my $fh, '/proc/loadavg';
my ($LA1) = split ' ', <$fh>;
close $fh;

perl のモジュールで、こういうシステム値を取得してくれるのって、あるのかな?

[Load Average 48 とか、どんだけー。より引用]

気になったので探してみたところ、Sys::Statistics::Linux らしい。

files => { loadavg => '/proc/loadavg', }
(中略)
open my $fh, '<', $file->{loadavg} or croak "$class: unable to open $file->{loadavg} ($!)";
( $lavg{avg_1}, $lavg{avg_5}, $lavg{avg_15} ) = (split /\s+/, <$fh>)[0..2];
close($fh);

[Sys::Statistics::Linux::LoadAVG 0.34より引用]

これも /proc/loadavg を \s+ で split するという実装のようだ。

ついでに Load Average の変化を継続的に見るなら (sysstat パッケージをインストールして) sar -q で。(@IT:障害の兆候を見逃さないためのサーバ監視(2/3))