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 задача или не.

Обратна връзка

Ако ограниченията са твърде силни и пречат на вашата работа, то се свържете с администрацията.