Мне дали задачу разбить сервисы на один из наших основных VMs (Amazon EC2) и соответствующий дополнительный VMs для удовлетворения сервисным потребностям.
Тип сервисов, с которыми я имею дело, главным образом php cronjobs, которые совпадают с нашим веб-приложением. Они - ресурс и IO тяжелый, таким образом потребность разгрузить их в другом месте.
Эти задания не имеют последовательного PIDs, они вспыхивают в и из существования по мере необходимости, таким образом, что-то как "grepping" для вывода args от PS - единственный способ, которым я могу думать, чтобы хранить эти данные. Другими словами, что последовательно, держит для процесс как так: ps -eo pid,pcpu,%mem,vsize,args | grep "php[ ]/path/to/script.php"
Однако некоторые процессы, только выполненные в течение нескольких секунд и затем, умирают.
Цель состоит в том, что я должен разобраться, как к лучшему условию VMs на основе ресурсов, которые на самом деле используют эти процессы, чтобы сэкономить деньги.
Заключить в кавычки: "Оцените использование сервера на основе среднего числа 1 недели"
Честно говоря, этот запрос звучит для меня немного подозрительно . Разве вы не можете просто переместить вещи и посмотреть, какова нагрузка на новую систему? При этом, о вашей реальной проблеме.
Вам необходимо выяснить использование ресурсов процессами (а не всей системой).
Вариант 1:
На самом деле вы можете запустить процессы с помощью какого-либо профилировщика или инструмента трассировки (например, perf
и strace
) и получить довольно точные данные. Это может потребовать много работы и, вероятно, закончилось kill для оценки совокупности процессов.
Вариант 2:
Сбор данных о процессах вскоре после их запуска с помощью счетчиков, которые ядро предоставляет для каждого процесса. Их можно найти в разделе / proc /
. Скорее всего, вы захотите использовать такой инструмент, как pidstat
, чтобы собрать эти данные для вас. Например:
[root@ny-kbrandt01 ~]# find / -iname '*' 2>&1 > /dev/null & pidstat -p $! -d -r -u -h 1
[1] 18736
Linux 2.6.32-431.el6.x86_64 (ny-kbrandt01.ds.stackexchange.com) 12/02/2014 _x86_64_ (4 CPU)
# Time PID %usr %system %guest %CPU CPU minflt/s majflt/s VSZ RSS %MEM kB_rd/s kB_wr/s kB_ccwr/s Command
1417486738 18736 1.00 2.00 0.00 3.00 3 360.00 8.00 112268 1236 0.02 4592.00 0.00 0.00 find
# Time PID %usr %system %guest %CPU CPU minflt/s majflt/s VSZ RSS %MEM kB_rd/s kB_wr/s kB_ccwr/s Command
1417486739 18736 1.00 3.00 0.00 4.00 2 241.00 0.00 112268 1240 0.02 4224.00 0.00 0.00 find
# Time PID %usr %system %guest %CPU CPU minflt/s majflt/s VSZ RSS %MEM kB_rd/s kB_wr/s kB_ccwr/s Command
1417486740 18736 1.00 3.00 0.00 4.00 3 0.00 0.00 112268 1240 0.02 5192.00 0.00 0.00 find
# Time PID %usr %system %guest %CPU CPU minflt/s majflt/s VSZ RSS %MEM kB_rd/s kB_wr/s kB_ccwr/s Command
1417486741 18736 1.00 6.00 0.00 7.00 2 46.00 0.00 112400 1284 0.02 5464.00 0.00 0.00 find
# Time PID %usr %system %guest %CPU CPU minflt/s majflt/s VSZ RSS %MEM kB_rd/s kB_wr/s kB_ccwr/s Command
1417486742 18736 2.00 5.00 0.00 7.00 2 0.00 0.00 112268 1240 0.02 6892.00 0.00 0.00 find
# Time PID %usr %system %guest %CPU CPU minflt/s majflt/s VSZ RSS %MEM kB_rd/s kB_wr/s kB_ccwr/s Command
1417486743 18736 3.00 7.00 0.00 10.00 2 62.00 0.00 112268 1244 0.02 8170.00 0.00 0.00 find
$!
в bash захватывает pid последнего запущенного задания (в этом примере - find). Таким образом, вы можете обернуть свои задания cron в такой сценарий, записать данные на диск, а затем проанализировать их с помощью excel, R или pandas.