Как количественно преобразовать значения производительности системы в одно значение производительности

У меня есть проект, в котором у меня есть несколько узлов в сетке, которые работают как узлы хранения и вычисления. Эти узлы разнородны: от выделенного серверного оборудования до плат Alix и даже маршрутизаторов Mikrotik с OpenWRT (состоящих в основном из хотя платы alix).

Я собираю показатели производительности системы, такие как использование ОЗУ, SWAP и ЦП, с помощью sigar java API. Это работает очень хорошо.

Моя следующая задача — взять эти значения производительности и объединить их таким образом, чтобы я мог сортировать свои хосты таким образом, чтобы я мог сказать, какой хост лучше всего справляется с вычислительным запросом. Это можно представить почти так же, как Windows оценивает производительность вашего компьютера с помощью индекса производительности Windows.

Моей первой попыткой было добавить используемые проценты использования ОЗУ, подкачки и ЦП (для Linux я масштабировал значение нагрузки до значения от 0 до 1). Затем для вычислительной операции выбирался хост, набравший наименьшее количество баллов.

У кого-нибудь есть лучшее представление о том, как это сделать. Мой способ показался мне очень «хакерским», и я не хотел бы подходить к работе в этом проекте.

Спасибо


person tensai    schedule 15.01.2013    source источник


Ответы (1)


Я бы получил оценку требований задачи и поставил машину под стать. У вас может быть много мелких работ и одна большая работа. Если вы сначала распределяете небольшие задания, самый большой сервер может быть занят, а меньшие блоки могут оказаться слишком маленькими. Возможно, вы захотите распределить небольшие задачи по небольшим серверам и оставить большие машины для более крупных задач.

У вас также будут задачи, которые требуют больше процессора или больше памяти.

Я бы не рассматривал использование SWAP. Java не может работать в пространстве подкачки, поэтому вам нужно убедиться, что оно никогда не понадобится.

person Peter Lawrey    schedule 15.01.2013
comment
Мой руководитель хочет, чтобы я использовал алгоритм жадной аппроксимации (используемый для решения задачи о рюкзаке), чтобы распределять задачи по конкретным узлам. Кроме того, узлы не обязаны выполнять только одну конкретную задачу, приложения являются многопоточными и могут обрабатывать более одного запроса к узлу. - person tensai; 15.01.2013