Physon е споделен ресурс, който следва да е достъпен за всички потребители. В особено голяма степен последното важи за интерактивния възел fe003
, който представлява входната точка на клъстера.
Ограничения върху fe003
За ограничаване на възможностите за “сриването” му от недобросъвестни и/или неопитни потребители, върху интерактивния възел са активни следните ограничения:
- Виртуалната памет за процеси, които не се стартират като задачи в Sun Grid Engine, е ограничена до 384 MB. Тази стойност е достатъчна за използване на наличните компилатори и повечето помощни инструменти на операционната система. При необходимост от повече памет за извършване на дадена обработка, използвайте интерактивни задачи.
- Броят включвания на даден потребител, в това число като SFTP/SCP сесии, е ограничен до 16. Всеки потребител е ограничен до 32 едновременно работещи процеса. Интерактивните задачи не се броят като включвания и в тях важат други ограничения, които се добавят към преди това изброените. Въпреки това в ограничението от 32 процеса се включват и тези, стартирани като интерактивни задачи!
- Задачите в интерактивната опашка могат да изискват до 8 GB виртуална памет. За всички интерактивни задачи е поставено ограничение от 12 GB сумарен размер на използваната виртуална памет.
Ограничения върху останалите възли
- Броят едновременно използвани слотове от даден потребител е ограничен до 160. Потребителите в даден проект могат да използват сумарно до 184 слота. Ограничението не важи за къси (до 4 часа) непаралелни задачи.
- Курсовите потребители са ограничени до 32 слота сумарно.
Общи ограничения
- По подразбиране размерът на виртуалната памет за всяка задача е ограничен на 1.8 GB (отнася се, както за интерактивните, така и за неинтерактивните задачи). Задача, процесите в която превишат сумарно тази граница, бива насилствено прекратявана от SGE. Ако вашата задача изисква повече памет, следва да укажете това изрично с ресурсния параметър
h_vmem
, напр.
#$ -l h_vmem=5G
или
qsub -l h_vmem=5G ...
Размерът на паметта може да се указва в единици GB (напр. 5G) или MB (напр. 5000M). - Препоръчително е заявяването на не повече от необходимото количество памет. В противен случай задачите ви може да стоят в състояние на изчакване, докато реално необходимите им ресурси са същевременно налични и стоят неоползотворени.
За паралелните задачи стойността на атрибута
h_vmem
се задава на слот, а не сумарно.
Подразбиращото се ограничение касае 64-битовите приложения, доколкото 32-битовите са ограничени до 2 GB виртуално адресно пространство поради фундаментална особеност на 32-битовия режим.
Помощна информация
Проверка за налични ресурси
Достъпната за нови задачи виртуална памет на възлите може да бъде определена с командата
qhost -F h_vmem
Размерът на виртуалната памет на възлите, работещи в пакетен режим, не е указан, поради което работещите на тях задачи могат да заявят сумарно повече памет от инсталираната такава.
Поведението на възлите при запълване на обема на физическата им памет е непредсказуемо, тъй като последните не разполагат с дялове за странирне на паметта.
Определяне на h_vmem
за вашите задачи
Пиковата стойност на размера на използваната от дадена задача виртуална памет може да бъде установена след приключването й с командата:
qacct -j #_на_задачата
Стойността се съдържа на реда, започващ с maxvmem
. Моментната стойност на използваната памет и пиковият размер за изпълняваща се задача могат бъдат установени с командата:
qstat -j #_на_задачата
Стойностите се съдържат в реда, започващ с usage. Текущо използваната виртуална памет е маркирана като vmem
, а пиковата й стойност като maxvmem
.
Въпроси и отговори
Защо се ограничава размерът на виртуалната памет на процесите, а не на частната памет в сегмента им за данни?
Отговор: Защото функцията за заемане на памет malloc(3)
в Linux погазва POSIX стандарта и използва алтернативен подход за заемане на системна памет чрез mmap(2)
след достигане на лимита върху размера на сегмента за данни.
Колко процеса консумира едно включване в клъстера през SSH?
Отговор: Два процеса – псевдотерминалния SSH сървър (видим в списъка от процеси като sshd: username<at>pts/#pty
) и командния интерпретатор (видима в списъка от процеси като -bash
или -tcsh
). Всяка външна за обвивката команда поражда допълнителен процес. “Скачените” (с използване на |
) команди могат да породят толкова едновременни процеса, колкото са съставящите команди.
Прецаках системата — пускам множество кратки програми на fe003
и така не ми се отчита потребление.
Отговор: На интерактивния възел функционира т.нар. BSD процесно счетоводство, което записва използваното процесорно време за всеки приключил процес, независимо дали е SGE задача или не.
Обратна връзка
Ако ограниченията са твърде силни и пречат на вашата работа, то се свържете с администрацията.