Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

perl high cpu usage

1.8K
29 сентября 2009 года
igor_nf
256 / / 13.12.2006
Есть с десяток серверов VmWare ESXi. Мониторинг загрузки процов, памяти и пр. было решено снимать при помощи Cacti. Для решения этой задачи мною были написаны несколько скриптов, снимающих показатели с серверов. В самих скриптах для осуществления доступа к серверам используется VmWare Perl SDK. Вот, для примера один из скриптов - получает текущую загрузку CPU в процентах с ESXi сервера:

Код:
#!/usr/bin/perl -W
# This script was pulled together using ideas from various places

use strict;
use warnings;
use diagnostics;

use Term::ReadKey;
use VMware::VIRuntime;
use VMware::VICommon;

#debugging - autoflush stdout
$| = 1;

if ($#ARGV != 0) {
        print "Wrong Arguments Passed\n\n";
        my $progname = qx(basename $0);
        chop $progname;
        printf("Usage: %s <<esxi hostname>>\n\n", $progname);
        exit 1;
}

my $username = "root";
my $password = "xxxxxxxxx";
my $service_url = "https://".$ARGV[0]."/sdk";

# Login to Virtual Center service:
Vim::login(service_url => $service_url, user_name => $username, password => $password);
my $host = Vim::find_entity_view(
view_type => 'HostSystem',
properties => [ 'summary' ],
);

my ($cpuMhz, $numCores, $cpuTotal, $cpuUsed, $cpuPercent);
my $summary = $host->get_property("summary");

$cpuMhz = $summary->hardware->cpuMhz;
$numCores = $summary->hardware->numCpuCores;
$cpuTotal = $cpuMhz * $numCores;
$cpuUsed = $summary->quickStats->overallCpuUsage;
$cpuPercent = $cpuUsed / $cpuTotal * 100;

printf("%0.2f\n", $cpuPercent);


Остальные скрипты построены аналогично.
Проблема в том, что когда поллер Cacti запускается, а он запускает по 3-4 таких скрипта для каждого хоста - напомню, хостов всего 10-15, резко возрастает нагрузка на проц, которая длится около нескольких минут. В связи с этим возникает пара вопросов.

1. Возможно ли как-то сократить утилизацию проца, используя такие скрипты? С чем связано столь неумеренное потребление ресурсов ?
2. Если не использовать perl - сократиться ли нарузка ? Я смотрел - есть что-то типа C++ SDK для таких задач ? Стоит ли заморачиваться с этим ?

Заранее спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог