Я выполняю 500 заданий в кластере Sun Engine, и у меня возникли некоторые проблемы (администратор кластера приостановил мои задания, потому что я перегрузил ЦП). Код написан на Java.
Когда я запускаю одно из заданий на своем ПК (Ubuntu 14.04) и использую команду htop
, чтобы посмотреть, что происходит, я получаю следующее:
Я видел, что это не отдельные процессы, а потоки. Код не генерирует потоки, но они, вероятно, являются потоками Java (например, сборщик мусора). Первая проблема: когда я запускаю тот же тест в кластере и использую htop, у меня гораздо больше потоков/процессов, около 50 (только для одного задания). Кто-нибудь знает, почему это может происходить?
Я использую следующие параметры с qsub:
qsub -t 1-500 -l h_rt=05:00:00 -l h_cpu=05:00:00 -l h_vmem=6G -e /some_path/ -o /some_path/ -N all_runs -cwd -m as -M mail@mail ./run.sh
(В run.sh
у меня указаны все задания).
С помощью этой команды qsub
каждое задание получает 1 слот, а загрузка процессора иногда составляет 150-200% (-> 1 слота недостаточно). Я видел, что кластер имеет параллельную среду, поэтому каждому заданию можно назначить больше слотов. Это можно сделать, добавив -pe smp 4
(или другое число) к команде qsub
.
Как узнать, сколько слотов вам нужно? И -pe smp 4
будет строго ограничивать максимум 4 слота? Я имею в виду, когда у задания есть 1 слот, а использование ЦП составляет 200%, это может повлиять на задания других пользователей. Я хочу быть уверен, что этого не может быть.
Если какой-то важной информации не хватает, пожалуйста, сообщите мне, и я добавлю ее.