англійськафранцузькаіспанська

Ad


Значок OnWorks

basl2cB – Інтернет у хмарі

Запустіть basl2cB у безкоштовному хостинг-провайдері OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда basl2cB, яку можна запустити у безкоштовного хостинг-провайдера OnWorks за допомогою однієї з наших безкоштовних онлайн-робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

ПРОГРАМА:

ІМ'Я


basl2c - перетворює код BASL (BAtch Scheduling Language) на код планувальника C.

СИНТАКСИС


basl2c [-d] [-l lexerDebugFile] [-p parserDebugFile] [-y symtabDebugFile] [-s
semanticDebugFile] [-g codegenDebugFile] [-c cFile] baslFile

ОПИС


basl2c це компілятор BASL для C, який створює проміжний код, який можна ввести в a
звичайний компілятор C і пов’язаний з бібліотеками PBS для створення виконуваного файлу планувальника.
Basl2c приймає як вхідні дані a baslFile, яка є програмою, написаною в пакетному плануванні
Мова, що містить основний код планування. Потім Basl2c перетворює конструкції BASL
у файлі в оператори C, а також додає додатковий код для створення PBS
вихідний код планувальника. За замовчуванням отриманий код C записується у файл
pbs_sched.c.

Повний шлях до отриманого файлу C – це те, що потрібно вказати в SCHD_CODE
змінної в local.mk перед компіляцією планувальника BASL для створення pbs_sched
виконуваний файл

ВАРІАНТИ


-d Виводить додаткові повідомлення про налагодження в лексер (див. опцію -l), аналізатор (див. -p
параметр), таблиця символів (див. параметр -y), семантичний аналізатор (див. параметр -s) і код
генератор (див. параметр -g).

-l lexerDebugFile
lexerDebugFile це ім'я файлу для запису в згенеровані повідомлення налагодження
під час сканування токенів.

-p parserDebugFile
parserDebugFile це ім'я файлу для запису в згенеровані повідомлення налагодження
під час об’єднання токенів зручним способом.

-y symtabФайл налагодження
symtabDebugFile це ім'я файлу для запису в пов'язаних повідомленнях налагодження
таблиця символів.

-s семантичний файл налагодження
semanticDebugFile це ім'я файлу для запису в повідомлення налагодження
генерується під час перевірки, щоб переконатися, що змінні та оператори використовуються в a
послідовним способом.

-g codegenDebugFile
codegenDebugFile це ім'я файлу для запису в згенеровані повідомлення налагодження
під час перетворення операторів BASL на оператори C.

-c cФайл
cFile це ім'я файлу, куди записується згенерований код C.

ОСНОВНІ СТРУКТУРА


Основна структура коду планувальника, написаного мовою BASL, така:
нуль or більше ФУНКЦІЇ Визначення
нуль or більше в цілому ЗМІННИЙ ДЕКЛАРАЦІЇ
нуль or більше призначення заяви (до ініціалізувати в цілому змінні)
sched_main()
{
один or більше ЗМІННИЙ ДЕКЛАРАЦІЇ

нуль or більше ЗАЯВА
}

Наприклад,
% як щед.басл
Int сума(Int a, Int b)
{
Int s;
s = a + b;
повернення(и);
}
Int куля;
sched_main()
{
Int c;

a = 3;
b = 4;
c = сума (а, б);
print(c);
куля = 5;
print(glob);
}

sched_main() це функція, яка викликається на кожній ітерації планування.

ФУНКЦІЇ


Щоб визначити функцію, яку можна викликати в наступних функціях, синтаксис такий:

ReturnType ім'я функції ( DATATYPE1 ІДЕНТИФІКАТОР1,
DATATYPE2 ІДЕНТИФІКАТОР2, ... )
{
один or більше ЗМІННИЙ ДЕКЛАРАЦІЇ

нуль or більше ЗАЯВА
}

Наприклад,
Void printStuff(День тижня dow, DateTime t, рядок вул,
Розмір sz, CNode cn)
{
print(dow);
print(t);
print(str);
друкувати (sz);
print(cn);
}

Дійсна функція ReturnType є: Void, Int, Float, Dayofweek, DateTime, String, Size,
Сервер, Que, Робота, CNode, Set Server, Set Que, Set Job, Set CNode.

Дійсні типи даних ( DATATYPE1, DATATYPE2, ... ) для ідентифікаторів параметрів є: Int,
Float, Dayofweek, DateTime, String, Size, Server, Que, Job, CNode, Set Server, Set Que,
Установити завдання, встановити CNode, діапазон Int, діапазон плаваючих значень, діапазон Dayofweek, діапазон дати і часу, розмір діапазону,
Fun Int, Fun Float, Fun Void, Fun Dayofweek, Fun DateTime, Fun String, Fun Size, Fun
Сервер, Fun Que, Fun Job, Fun CNode, Fun Set Server, Fun Set Que, Fun Set Job, Fun Set
CNode. Ці типи даних будуть розглянуті в наступній темі.

Функції викликаються за їхніми іменами та аргументами, як у:

printStuff( ПН, (5|1|1997@14:32:00), "щед починається",
30 гб, вузол );

basl2c фактично додасть префікс "basl_" до імені функції, наданого планувальником
writer, щоб мінімізувати ймовірність зіткнення імен, яке може виникнути, коли результуючий код C є
пов'язані з бібліотеками PBS, BASL. Наприклад, якщо ви подивіться на згенерований код C для
printStuff, ви б побачили,

basl_printStuff( MON, (5|1|1997@14:32:00),
"sched begins", 30gb, node );

Як і в C, усі виклики функцій повинні бути визначені раніше. Компілятор BASL буде
перевірте, щоб переконатися, що аргументи у виклику функції точно збігаються (з точки зору
типи) з параметрами у визначенні функції.

У BASL існує два типи функцій: призначені для користувача функції та попередньо визначені функції.
Визначені користувачем функції – це ті, для яких автор планувальника надав визначення,
тоді як попередньо визначені функції – це ті, які можна негайно викликати без потреби
визначення його. Список попередньо визначених функцій див. у розділі ЗАВЕРШЕНИЙ ФУНКЦІЇ .

ЗМІННИЙ ДЕКЛАРАЦІЇ


Як і в C, усі змінні в коді BASL мають бути явно оголошені перед використанням. Ті
змінні, оголошені поза будь-якою функцією, називаються глобальними змінними, тоді як
змінні, які оголошуються в тілі функції, називаються локальними змінними. Глобальний
змінні можна використовувати будь-де в коді BASL, тоді як локальні змінні читаються
лише в межах функції, з якої вони були оголошені.

Синтаксис оголошення змінної такий:

ТИП ДАНИХ ІДЕНТИФІКАТОР ;

де ТИП ДАНИХ може бути: Int, Float, Dayofweek, DateTime, String, Size, Server, Que, Job,
CNode, Set Server, Set Que, Set Job, Set CNode, Range Int, Range Float, Range Dayofweek,
Діапазон дати і часу, розмір діапазону.

ДАНІ TYPE


Void використовується для функцій, які не повертають значення.

Int зі знаком, цілі числа за основою 10.

Приклад констант:
5, +1, -3, УСПІХ (=1), НЕВДАЧА (=0), ІСТИНА (=1), НЕПРАВДА (=0)

Поплавок дійсні числа, які представлені як подвійні числа в перекладеному коді C.
Константи вибірки: 4.3, +1.2, -2.6

День тижня
постійні значення: НДС, ПН, ВТ, СР, ЧЕТ, ПТ, СУБ, внутрішньо представлені як
цілочисельні константи з SUN=0, MON=1 і так далі.

DateTime
вкажіть в одному з 3 форматів:

[1] (m|d|y), де 1 <= m <= 12, 1 <= d <= 31, 0 <= y, наприклад. (4|4|1997);

[2] (гг:хх:сс), де 0 <= гг <= 23, 0 <= мм <= 59, 0 <= сс <= 61, напр.
(12:01:00);

[3] (m|d|y@hh:mm:ss), ex. (4|4|1997@12:01:00)
Під час порівняння дати/часу замість часу замінюється час "зараз".
порція не надається (формат [1]); дата "зараз" замінюється, якщо
частина дати не вказана (формат [2]). Крім того, повна річна частина повинна
вказувати (тобто 1997 замість 97) у датах, щоб уникнути двозначності.

рядок Рядок береться в лапки (") і може містити будь-що, крім іншого
цитата, новий рядок, ліві та праві дужки.
Зразок констант: "зразок рядка", NULLSTR

Розмір формат: де суфікс є множником у формі:
:

множник блок (байт or слова)
=================== =====================
k,m,g,t,p,K,M,G,T,P б,Б,ш,Ш

де k=K=1024, m=M=1,048,576, g=G=1,073,741,824, t=T=1,099,511,627,776,
p=P=1,125,899,906,842,624, b=B=1, а розмір слова w=W визначається локально (тобто 4
байтів у 32-бітній машині).

Під час роботи з операндами 2 розмірів, які мають різні суфікси, суфікс of
«нижчий» із двох буде результуючим суфіксом. Наприклад,
10 Мб + 10 Гб = 10250 Мб
Константи вибірки: -1b, 2w, 1kb, 2mw, +3gb, 4tw, 6Pb

Діапазон Int

формат: (низьке значення Int, високе значення Int)
де низьке значення Int <= високе значення Int. Константа вибірки: (1,3)

Діапазон Поплавок

формат: (низьке значення Float, високе значення Float)
де низьке значення <= високе значення. Константа вибірки: (2.3, 4.6)

Діапазон День тижня

формат: (раніший день, пізніший день)
де попередній день <= пізніший день. Константа вибірки: (СР, ПТ)

Діапазон DateTime

формат: (попередня дата/час, пізніша дата/час)
де більш рання дата/час <= пізніша дата/час.
ПРИМІТКА: якщо діапазон містить лише часові частини, і "з'являється" попередній час
бути > пізніший час, як у "((18:0:0), (6:0:0))", потім протягом дати/часу
порівняння, «пізніший» час буде скориговано на один день, щоб він був
виглядає так: "( (@18:0:0), (@6:0:0) )"

Приклад констант:
((4|4|1997), (4|10|1997)), ((12:01:00), (12:30:00)), ((4|4|1997@12:01:00),
(4|10|1997@12:30:00))

Діапазон Розмір

формат: (малий розмір, високий розмір)
де низький розмір <= великий розмір. Приклад констант: (23 ГБ, 50 ГБ)

сервер Відображається безпосередньо на об’єкт сервера PBS. А сервер керує одним або кількома Що об’єкти.
Константа вибірки: NOSERVER

CNode для обчислювального вузла, що складається з одного образу ОС, спільної пам’яті та набору
процесора. CNode запускає 1 PBS MOM.
Константа вибірки: NOCNODE

Що Відображається безпосередньо на об’єкт черги PBS. А Що один або більше об'єктів робота
об’єкти.
Константа вибірки: NOQUE

робота Відображається безпосередньо на об’єкт завдання PBS. А робота об'єкт несе деякі атрибути і
вимоги до ресурсів.
Константа вибірки: NOJOB

Установка сервер
список об'єктів Сервера.
Приклад константи: EMPTYSETSERVER

Установка CNode
список об'єктів CNode.
Зразок константи: EMPTYSETCNODE

Установка Що список об'єктів Que.
Зразок константи: EMPTYSETQUE

Установка робота список об'єктів Job.
Приклад константи: EMPTYSETJOB

ВИЗНАЧЕНИЙ BASL КОНСТАНТИ


Це константи, які не можна використовувати для іменування ідентифікатора (див. наступну тему). Ці
завжди пишуться великими літерами.

ДАНІ TYPE ВИЗНАЧЕНИЙ BASL Константа
=================== =============================================
День тижня СОНЦЕ, ПН, ВТ, СР, ЧТ, ПТ, SAT

Int УСПІХУ, НЕВДАЧА, ПОМИЛКОВИЙ, ІСТИНА, SYNCRUN, ASYNCRUN,
ВИДАЛИТИ, ПОВТОРИТИ, ТРИМАТИ, ВІДПУСТИТИ, СИГНАЛ,
MODIFYATTR, МОДИФІКУЄ, SERVER_ACTIVE,
SERVER_IDLE, SERVER_SCHED, SERVER_TERM,
SERVER_TERMDELAY, QTYPE_E, QTYPE_R,
SCHED_DISABLED, SCHED_ENABLED, ТРАНЗИТ,
У ЧЕРГІ, ВІДБУЛОСЯ, ЧЕКАЮ, БІГ, ВИХІД,
CNODE_OFFLINE, CNODE_DOWN, CNODE_FREE,
CNODE_RESERVE, CNODE_INUSE_EXCLUSIVE,
CNODE_INUSE_SHARED, CNODE_TIMESHARED,
CNODE_CLUSTER, CNODE_UNKNOWN, OP_EQ, OP_NEQ,
OP_LE, OP_LT, OP_GE, OP_GT, OP_MAX, OP_MIN,
ASC DESC

сервер NOSERVER
Установка сервер EMPTYSETSERVER

CNode NOCNODE
Установка CNode EMPTYSETCNODE

Що NOQUE
Установка Що EMPTYSETQUE

робота NOJOB
Установка робота EMPTYSETJOB

рядок NULLSTR

ІДЕНТИФІКАТОР


Ідентифікатори (використовуються для імен змінних і імен функцій) мають буквено-цифровий формат, з
дозволений спеціальний символ підкреслення (_). Наразі BASL може обробляти лише ідентифікатори
довжиною до 80 символів. Крім того, ви не можете використовувати визначені BASL імена констант для
іменування ідентифікатора.

ЗАЯВА


In BASL(2), ви можете мати один оператор, що завершується крапкою з комою, або групою
оператори (так звані складені оператори або блоки), розділені '{' і '}'. Різні
Типи операторів, які можуть з’являтися в коді BASL:

1. вираз вираз
Інструкції-вирази мають будь-яку форму:

експр ;

де експр може бути:

а) Арифметичні вирази

лекспр + reexpr (додати)
лекспр - reexpr (відняти)
лекспр * reexpr (множити)
лекспр / reexpr (розділити)
лекспр % reexpr (модуль or залишок)

ПРИМІТКА: додавання, віднімання, множення, ділення та залишок
буде дозволено лише для відповідних типів і якщо ліворуч і праворуч
вирази є узгодженими типами. Таблиця нижче ілюструє що
типи узгоджуються між різними операторами:

Для +:

лекспр reexpr
============ ============
Int or Поплавок Int or Поплавок
Розмір Розмір
рядок рядок

Для -, *, /:

лекспр reexpr
============ ============
Int or Поплавок Int or Поплавок
Розмір Розмір

Для %:

лекспр reexpr
============ ============
Int or Поплавок Int or Поплавок

Ось кілька прикладів арифметичних виразів:
Int i1;
Int i2;
Поплавок f1;
Поплавок f2;
Розмір sz1;
Розмір sz2;
рядок str1;
рядок str2;

i1 + i2;
f1 - i2;
sz1 * sz2 * 2b;
sz1 / 1024b;

str1 = "басл";
str2 = " круто»;

// після is a рядок конкатенація
// операція в результаті in рядок:
// "басл круто"
str1 + str2;

i1 % 10;

b) Унарні вирази

+вираз // позитивний - розмножується by 1 an
// вираз Що is
// of Int, поплавок, or
// Розмір тип

-вираз // негативний - розмножується by -1 an
// вираз Що is
// of Int, поплавок, or
// Розмір тип

!вираз // НЕ - новонавернені a ненульовий експр
// значення в 0, та a
// нуль експр значення в 1
// де експр тип повинен be
// of тип Int or Поплавок

Деякі приклади унарних виразів:
Int i;

+ 3;
-(і + 4);
!i;

c) Логічні вирази

лекспр EQ reexpr
лекспр NEQ reexpr
лекспр LT reexpr
лекспр LE reexpr
лекспр GT reexpr
лекспр GE reexpr
лекспр І reexpr
лекспр OR reexpr

лекспр та reexpr повинні мати типи, які є взаємно узгодженими, як показано
у наступній таблиці:

lterminal-expr rterminal-expr
============== ==============
Int or Поплавок Int or Поплавок
День тижня День тижня
DateTime DateTime
рядок рядок
Розмір Розмір
сервер сервер
Що Що
робота робота
CNode CNode
Установка сервер Установка сервер
Установка Що Установка Що
Установка робота Установка робота
Установка CNode Установка CNode

для І, OR оператори, в lexpr, reexpr послідовними типами є Int або
Поплавати.

Деякі приклади логічних виразів:

i1 EQ i2;
i1 NEQ f2;
dow1 LE dow2;
d1 LT d2;
str1 GT str2;
sz1 GE sz2;

d) Післяоператорні вирази
Це вирази, які є просто ярликом для призначення
заяви.

ІДЕНТИФІКАТОР++; // ідентифікатор=ідентифікатор+1
ІДЕНТИФІКАТОР--; // ідентифікатор=ідентифікатор-1

ІДЕНТИФІКАТОР має бути типу Int або Float.

приклад:
Int i;
Поплавок f;

i + +;
f--;

e) Виклик функції

ім'я функції ( arg1 ,arg2 ... , argN )

де arg1, ..., argN може бути будь-якою константою або змінною. Ви не можете мати
інший виклик функції як аргумент.
приклад:
Void pr(Int a) {
print(a);
}

pr(5);

Існують певні попередньо визначені функції, які може використовувати автор планувальника
автоматично викликає його/її код BASL без необхідності його визначення.
Ці функції називають допоміжними (або допоміжними).
функції), і вони обговорюються нижче ЗАВЕРШЕНИЙ ФУНКЦІЇ тема.

е) Константи
Деякі дійсні постійні вирази наведено нижче:
5;
+ 1.2;
СОНЦЕ;
ПН;
ВТВ;
СР;
ЧТ;
ПТ;
SAT;
(4|4|1997);
(12:01:00);
(4|4|1997@12:01:00);
«чудовий»;
-1б;
SYNCRUN;
ASYNCRUN;
ВИДАЛИТИ;
ПОВТОРИТИ;
ТРИМАТИ;
ЗВІЛЬНИТИ;
СИГНАЛ;
MODIFYATTR;
МОДИФІКУЄ;
(1, 3);
(2.3, 4.6);
(СР, ПТ);
((4|4|1997), (4|10|1997));
((12:01:00), (12:30:00));
((4|4|1997@12:01:00), (4|10|1997@12:30:00));
(23гб, 50гб);
NOSERVER;
NOCNODE;
NOQUE;
NOJOB;
EMPTYSETSERVER;
EMPTYSETCNODE;
EMPTYSETQUE;
EMPTYSETJOB;
NULLSTR;
УСПІХ;
НЕВДАЧА;
SERVER_ACTIVE;
SERVER_IDLE;
SERVER_SCHED;
SERVER_TERM;
SERVER_TERMDELAY;
QTYPE_E;
QTYPE_R;
SCHED_DISABLED;
SCHED_ENABLED;
ПОМИЛКОВИЙ;
ІСТИНА;
ТРАНЗИТ;
У ЧЕРГІ;
ПРОВЕДЕНИЙ;
ОЧІКУВАННЯ;
БІГ;
ВИХІД;
CNODE_OFFLINE;
CNODE_DOWN;
CNODE_FREE;
CNODE_RESERVE;
CNODE_INUSE_EXCLUSIVE;
CNODE_INUSE_SHARED;
CNODE_TIMESHARED;
CNODE_CLUSTER;
CNODE_UNKNOWN;
OP_EQ;
OP_NEQ;
OP_LE;
OP_LT;
OP_GE;
OP_GT;
OP_MAX;
OP_MIN;

g) Ідентифікатор

приклад:
Int i;

i;

2. Відомість доручення

ІДЕНТИФІКАТОР = експр ;

ІДЕНТИФІКАТОР та експр повинні мати типи, які є взаємно узгодженими, як
показано в наступній таблиці:

ідентифікатор експр
=============== ===============
Int Int, Поплавок
Поплавок Int, Поплавок
День тижня День тижня
DateTime DateTime
рядок рядок
Розмір Розмір
Що Що
робота робота
CNode CNode
сервер сервер
День тижня День тижня
DateTime DateTime
Установка сервер Установка сервер
Установка Що Установка Що
Установка робота Установка робота
Установка CNode Установка CNode
Діапазон Int Діапазон Int
Діапазон Поплавок Діапазон Поплавок
Діапазон День тижня Діапазон День тижня
Діапазон DateTime Діапазон DateTime
Діапазон Розмір Діапазон Розмір

3. якщо ... інакше заяву
Формат оператора if подібний до формату в C із розмежуванням
"{" і "}" завжди присутні:

if ( експр ) {
нуль or більше (True) ЗАЯВА
}

if ( експр ) {
нуль or більше (True) ЗАЯВА
} ще {
нуль or більше (помилковий) ЗАЯВА
}

Команда експр 's Тип має бути Int або Float, і після оцінки, якщо його
значення відмінне від нуля, тоді виконуються істинні оператори. На другому
формі, якщо експр обчислюється як нуль, тоді виконуються помилкові оператори.

Якийсь зразок if заяви наведені нижче:

if (2 * x )
{
y = y + 3;
print(y);
}

if (2 * x ) {
y = y + 3;
} ще {
if ( 3 * x ) {
y = 4;
} ще {
y = 5;
}
}

4. та цінності петля заяву
Формат оператора for такий:

для( почати; тест; дію ) {
нуль or більше ЗАЯВА
}

Так само, як у C, та цінності перший виконує старт , потім оцінює тест стан
щоб побачити, чи повертає він ненульове значення. Якщо так, то та цінності заяви є
виконано. Після та цінності потім виконуються оператори дію оцінюється,
а потім перевіряє тест стан знову таким же чином, як і раніше.
старт та дію може бути простим виразом присвоювання або постоператором
вираз. тест є логічним/реляційним виразом. Деякі зразки для
заяви наведені в наступному:

та цінності (i = 0; i LT 3 ; i = i + 1)
{
print(i);
}

та цінності (i = 0; i LT 2 * x; я++)
{
if (x GT 3)
{
y = 99;
} ще
{
x = 73;
}
}

5. для кожного петля заяву
Цей оператор в основному використовується для послідовного отримання кожного елемента
a Встановити тип даних: встановити сервер, встановити CNode, встановити завдання, встановити запит. Синтаксис:

для кожного ( ІДЕНТИФІКАТОР1 in ІДЕНТИФІКАТОР2 ) {
нуль or більше ЗАЯВА
}

де дозволено наступне поєднання типів для ідентифікаторів:

ІДЕНТИФІКАТОР1 ІДЕНТИФІКАТОР2
=========== ===========
сервер Установка сервер
Що Установка Що
робота Установка робота
CNode Установка CNode

приклад:
сервер s;
Що q;
робота j;
CNode c;

Установка сервер ss;
Установка Що кв;
Установка робота sj;
Установка CNode sc;

foreach(s in ss){
друк(и);
}
foreach(q in sq){
print(q);
}
foreach(j in sj){
print(j);
}
foreach(c in sc){
print(c);
}

6. в той час як петля заяву
Синтаксис циклу while такий:

в той час як ( експр ) {
нуль or більше ЗАЯВА
}

де експр має бути типу Int або Float. Якщо експр не дорівнює нулю, то нуль
або більш ЗАЯВА виконуються і експр переоцінюється.

приклад:
Int i;
i = 3;
поки я) {
if ( i EQ 0 ) {
print("розрив on i = 1");
break;
}
я--;
}

7. перемикання заяву
Інструкція switch — це багатостороннє рішення, яке перевіряє, чи an
значення ідентифікатора відповідає одному з кількох значень і розгалужується на a
група тверджень відповідно.
Синтаксис оператора switch такий:

перемикач ( ІДЕНТИФІКАТОР ) {
випадок константа-експр :
{
нуль or більше ЗАЯВА
}
випадок константа-експр :
{
нуль or більше ЗАЯВА
}
...
випадок in постійний-діапазонOrSet-вираз :
{
нуль or більше ЗАЯВА
}
випадок in IDENTIFIER-rangeOrSettype :
{
нуль or більше ЗАЯВА
}
дефолт :
{
нуль or більше ЗАЯВА
}
}

де константа-експр є експр типу Int, Float, Dayofweek, DateTime,
Size, String, Server, Que, Job або CNode. постійний-діапазонOrSet-вираз та
IDENTIFIER-rangeOrSettype може мати тип Set Server, Set CNode, Set Que, Set
Job, Range Int, Range Float, Range Dayofweek, Range DateTime або Range Size.

ІДЕНТИФІКАТОР не може мати тип Void. ІДЕНТИФІКАТОР 's тип повинен бути послідовним
з константа-експр 's, постійний-діапазонOrSet-вираз 's, та ІДЕНТИФІКАТОР-
rangeOrSettype 's типу, як показано в наступній таблиці:
ІДЕНТИФІКАТОР вираз постійного діапазону, IDENTIFIER-rangetype
=========== =========================================
сервер Установка сервер
Що Установка Що
робота Установка робота
CNode Установка CNode
Int Діапазон Int
Поплавок Діапазон Поплавок
День тижня Діапазон День тижня
DateTime Діапазон DateTime
Розмір Діапазон Розмір

Якщо регістровий вираз відповідає ІДЕНТИФІКАТОР 's значення, то відповід
блок операторів виконується. На відміну від C, виконання НЕ падає
до наступного опису випадку. Причина цього в тому, що basl2c волі
перекладіть це перемикання оператор у конструкцію if-elseif-else. Справа
з позначкою default виконується, якщо жоден з інших випадків не задовольняється. The
дефолт є необов'язковим; якщо його немає, і якщо жоден із випадків не збігається, ні
відбувається дія.

приклад:
День тижня dow;

перемикач
{
випадок MON:
{
print("випадок ПН");
}
випадок ЧОР:
{
print("випадок ВТВ»);
}
випадок СР:
{
print("випадок СР");
}
випадок ЧТ:
{
print("випадок ЧВ");
}
випадок ПТ:
{
print("випадок ПТ»);
}
випадок SAT:
{
print("випадок СБ");
}
випадок НД:
{
print("випадок СОНЦЕ");
}
за замовчуванням:
{
print("випадок за замовчуванням");
}
}

Int a;
Діапазон Int ri;
ri = (10, 12);
перемикач(а)
{
випадок in (1,5):
{
print("випадок 1,5");
}
випадок in (6,9):
{
print("випадок 6,9");
}
випадок in ri:
{
print("випадок ri");
}
}

8. друк заяву
Інструкція Print здатна виводити на stdout значення будь-якого ідентифікатор
or постійна типу Int, Float, Dayofweek, DateTime, String, Size, Que, Job,
CNode, Server, Range Int, Range Float, Range Dayofweek, Range DateTime,
Розмір діапазону.
Синтаксис виглядає наступним чином:

друк ( ІДЕНТИФІКАТОР );
друк ( постійна );

приклад:
DateTime dt;
CNode cn;

dt = (4|4|1997@12:13:36);
cn = AllNodesLocalHostGet();

print(dt);
print(cn);

Для типів наборів використовуйте для кожного щоб пройти через кожен елемент і надрукувати, як у:

сервер s;
Установка сервер ss;

ss = AllServersGet();

foreach(s in ss) {
друк(и);
}

9. продовження заяви

продовжувати ;

Команда продовжувати інструкція повинна бути викликана в межах a для, для кожного, та
в той час як петля. Це викликає початок наступної ітерації охоплюючого циклу.

10. оператор перерви

перерву ;

Команда перерву інструкція повинна бути викликана в межах a для, для кожного, та в той час як
петля. Він забезпечує ранній вихід з огороджувального циклу.

11. заява про повернення

повернення (ІДЕНТИФІКАТОР) ;
повернення (константа) ;
повернення() ;

Оператор return надає значення (якщо таке є), яке повертає a
функція. Тип, який повертає ІДЕНТИФІКАТОР та постійна повинні відповідати
тип повернення функції виклику. постійна Дозволені типи - це все, крім
Типи наборів і діапазонів. Останній формат, повернення() зазвичай викликається в межах a
функція, яка не повертає жодного значення (наприклад sched_main() ).

12. заява про вихід

вихід (константа);

де постійна має тип Int. Виклик цього призведе до завершення планувальника.

13. Коментар заяви
Це оператори з префіксом "//", і вони ігноруються BASL
компілятор.

// це лінія is ігноруються
Int i; // рядок після косі риски is ігноруються

ОПЕРАТОР ПЕРЕЦІЕНТ І АСОЦІАТИВНІСТЬ


У наведеній нижче таблиці показано різні рівні пріоритету операторів і визначену асоціативність
мовою BASL. Оператори перераховані в порядку зменшення пріоритету. The
чим вищий пріоритет оператора, тим раніше він виконується. Порядок, у якому
оператори на одному рівні виконуються залежно від асоціативності: ліворуч означає
оператори видно зліва направо, тоді як right означає, що вони видно справа наліво.

Оператор Асоціативність
============================= =============
! ++ -- + (однонарний плюс) - (однонарний мінус) право
* / % залишити
+ - залишити
LT LE GT GE залишити
EQ NEQ залишити
І залишити
OR залишити
= право

ЗАВЕРШЕНИЙ ФУНКЦІЇ


In BASL(2), а сервер тип даних відображається безпосередньо в об’єкт пакетного сервера. Так само CNode
для мами/мами, робота це пакетна робота та Що це пакетна черга. Однак не всі
доступ до атрибутів об’єктів PBS можна отримати з BASL. Лише підмножина атрибутів,
ті, які, здавалося б, мають сенс у контексті планувальника, стають доступними, і
Значення цих атрибутів можна отримати, викликавши наступні попередньо визначені функції,
відомі також як функції допомоги/помічника.

(1) Функції, пов’язані з сервером

Установка сервер AllServersGet(void)
Повертає список серверів, указаних у файлі конфігурації для
які автор планувальника хоче, щоб система періодично перевіряла
інформація про стан, черги та вакансії. Побачити pbs__sched__basl(8В) для
обговорення формату файлу конфігурації.
УВАГА: цю функцію потрібно викликати зсередини sched_main() so
що на кожній ітерації планування найновіші Установка сервер
структура повертається.

сервер AllServersLocalHostGet(void)
Повертає об’єкт Server, який представляє локальний хост. не встановлене значення:
NOSERVER. Це проста функція для виклику некластерних середовищ
де існує лише один серверний хост.
УВАГА: цю функцію потрібно викликати зсередини sched_main() (або від
у функції, яку викликає sched_main), щоб під час кожного планування
ітерація, найсучасніша сервер структура повертається.

рядок ServerInetAddrGet(Сервер s)
Повертає назву для серверів. невстановлене значення: NULLSTR

рядок ServerDefQueGet(Сервер s)
Повертає атрибут default_queue сервера. невстановлене значення: NULLSTR

Int ServerStateGet(Сервер s)
Повертає атрибут server_state сервера.

Повернене значення:
SERVER_ACTIVE, SERVER_IDLE, SERVER_SCHED, SERVER_TERM,
SERVER_TERMDELAY, -1 (не встановлене значення)

Int ServerMaxRunJobsGet(Сервер s)
Повертає атрибут max_running серверів. невстановлене значення: 0

Int ServerMaxRunJobsPerUserGet(Сервер s)
Повертає атрибут max_user_run сервера. невстановлене значення: 0

Int ServerMaxRunJobsPerGroupGet(Сервер s)
Повертає атрибут max_group_run сервера. невстановлене значення: 0

Установка Що ServerQueuesGet(Сервер s)
Повертає список черг, якими керує сервер.

Установка робота ServerJobsGet(Сервер s)
Повертає список завдань, якими керує сервер. Для отримання підмножини цього
список, див QueJobsGet().

Int ServerIntResAvailGet(Сервер s, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що доступно для робочих місць
запущений цим сервером (Сервер ресурси_доступні.назва атрибут). Зателефонуйте цьому
функція для ресурсів зі значеннями типу Int. Зразок ресурсу
імена: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Для опису цих
назви ресурсів див pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

приклад:
Int cpuAvail;
// повертати # of процесори в даний час доступний in
// сервер
cpuAvail = ServerIntResAvailGet(сервер, "ncpus");

Розмір ServerSizeResAvailGet(Сервер s, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що доступно для робочих місць
запущений цим сервером (Сервер ресурси_доступні.назва атрибут). Зателефонуйте цьому
функція для ресурсів зі значеннями типу Size. Зразок ресурсу
імена: файл, mem, pmem, робочий набір, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Для опису цих ресурсів
імена, див pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

приклад:
Розмір memAvail;
// повертати кількість of доступний пам'ять in
// сервер
memAvail = ServerSizeResAvailGet(сервер, "пам'ять");

рядок ServerStringResAvailGet(Сервер s, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що доступно для робочих місць
запущений цим сервером (Сервер ресурси_доступні.назва атрибут). Зателефонуйте цьому
функція для ресурсів зі значеннями типу String. Зразок
імена ресурсів: вузли, арка, потрібні вузли. Для опису цих
назви ресурсів див pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

приклад:
рядок тип;
// повертати архітектура (Або os тип) of
// сервер
тип = ServerStringResAvailGet(сервер, "арка");

Int ServerIntResAssignGet(Сервер s, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що виділено
запущені завдання (Сервер resources_assigned.name атрибут). Зателефонуйте цьому
функція для ресурсів зі значеннями типу Int. Зразок ресурсу
імена: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Для опису цих
назви ресурсів див pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

приклад:
Int cpuAssn;
// повертати # of процесори в даний час призначений in
// сервер
cpuAssn = ServerIntResAssignGet(сервер, "ncpus");

Розмір ServerSizeResAssignGet(Сервер s, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що виділено
запущені завдання (Сервер resources_assigned.name атрибут). Зателефонуйте цьому
функція для ресурсів зі значеннями типу Size. Зразок ресурсу
імена: файл, mem, pmem, робочий набір, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Для опису цих ресурсів
імена, див pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

приклад:
Розмір sdsAssn;
// повертати кількість of ДСН простір в даний час призначений
// in сервер
sdsAssn = ServerSizeResAssignGet(сервер, "sds");

рядок ServerStringResAssignGet(Сервер s, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що виділено
запущені завдання (Сервер resources_assigned.name атрибут). Зателефонуйте цьому
функція для ресурсів зі значеннями типу String. Зразок
імена ресурсів: вузли, арка, потрібні вузли. Для опису цих
назви ресурсів див pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

Установка CNode ServerNodesGet(Сервер s)
Повертає набір вузлів, якими керує сервер s. невстановлене значення: EMPTYSETCNODE.
ПРИМІТКА. Зазвичай ви можете викликати такі функції для повернутих вузлів
цим викликом: CNodeStateGet(), CNodePropertiesGet() і CNodeTypeGet().

Int ServerNodesQuery(Сервер s, рядок специфікація)
Видає запит на вказаний сервер для запиту про доступність
ресурси, зазначені в спец. На даний момент єдиний ресурс
дозволена специфікація, яка включає "вузли", і вона може бути з
формат "nodes", "nodes=" або "nodes=". Результати запиту можуть бути
отримати доступ за допомогою виклику таких функцій: ServerNodesNumAvailGet(),
ServerNodesNumAllocGet(), ServerNodesNumRsvdGet(),
ServerNodesNumDownGet().
ПРИМІТКА. Це обгортка для pbs_rescquery(3B) функція сервера.

Повернене значення:
УСПІХ, НЕВДАЧА

Int ServerNodesNumAvailGet(Сервер s)
Повертає кількість вузлів, доступних для тих, якими керує вказаний
сервера або відповідно до останнього запиту, визначеного
ServerNodesQuery(). Якщо повернуте значення дорівнює нулю, це означає, що
певна кількість вузлів, яка на даний момент необхідна для задоволення специфікації
ServerNodesQuery() наразі недоступні. Можливо запит буде задоволений
в якийсь пізніший час. Якщо результат негативний, комбінація невідома
вузли можуть задовольнити специфікації.

Int ServerNodesNumAllocGet(Сервер s)
Повертає кількість вузлів, виділених для тих, якими керує вказаний
сервера або відповідно до останнього запиту, визначеного
ServerNodesQuery().

Int ServerNodesNumRsvdGet(Сервер s)
Повертає кількість вузлів, зарезервованих для тих, якими керує вказаний
сервера або відповідно до останнього запиту, визначеного
ServerNodesQuery().

Int ServerNodesNumDownGet(Сервер s)
Повертає кількість вузлів для тих, якими керує вказаний
сервера або відповідно до останнього запиту, визначеного
ServerNodesQuery().

Int ServerNodesReserve(Сервер s, рядок spec,Int resId)
Видає запит на вказаний сервер для резервування ресурсів
зазначене в спец. Значення 0 для resId означає, що це для виконання a
нове бронювання. В іншому випадку номер представлятиме існуючий
(часткове) резервування. Зараз для цього зарезервовано ресурси resId волі
буде звільнено, і буде зроблена повторна спроба повного резервування. Біля
на даний час єдиними ресурсами, які можна вказати, є
«вузли». Слід вказати як вузли=специфікація де
специфікація — це те, що користувач вказує у списку аргументів опції -l
для вузлів див. qsub (1B).
ПРИМІТКА. Це обгортка для pbs_rescreserve(3B) функція сервера.

Повернене значення:
контрольний номер успішного або частково успішного
резервування, або FAIL

Int ServerNodesRelease(Сервер s, Int resId)
Це звільняє або звільняє ресурси, зарезервовані за номером посилання
зазначене в resId.
ПРИМІТКА. Це обгортка для pbs_rescrelease(3B) функція сервера.

Повернене значення:
УСПІХ, або НЕВДАЧА

(2) Que-пов'язані функції:

рядок QueNameGet( Що що )
Повертає назву Que que. невстановлене значення: NULLSTR

Int QueTypeGet( Що що )
Повертає атрибут queue_type для Que que.
Повернене значення: QTYPE_E (виконання), QTYPE_R (маршрутизація), -1 (не встановлено)
значення)

Int QueNumJobsGet( Що що )
Повертає кількість вакансій, які знаходяться в Que que. невстановлене значення: 0

Int QueMaxRunJobsGet( Що що )
Повертає атрибут max_running для Que que. невстановлене значення: 0

Int QueMaxRunJobsPerUserGet( Що що )
Повертає атрибут max_user_run Que que. невстановлене значення: 0

Int QueMaxRunJobsPerGroupGet( Що що )
Повертає атрибут max_group_run Que que. невстановлене значення: 0

Int QuePriorityGet( Що що )
Повертає атрибут Priority для Que que. невстановлене значення: 0

Int QueStateGet( Що що )
Повертає запущений атрибут Que que - вибір виконання завдання
стан запиту: SCHED_DISABLED, SCHED_ENABLED. не встановлене значення:
SCHED_DISABLED

Установка робота QueJobsGet( Що що )
Повертає список вакансій, які наразі знаходяться в que.

Int QueIntResAvailGet(Que q, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що доступно для
завдання, що виконуються з цього q (Que ресурси_доступні.назва атрибут).
Викликайте цю функцію для ресурсів зі значеннями типу Int.
Приклади імен ресурсів: cput, pcput, walltime, mppt, pmppt, nice,
procs, mppe, ncpus, pncpus, nodect, srfs_assist, mta,..., mth. Для
опис цих імен ресурсів див pbs_resources_irix5(7В),
pbs_resources_sp2(7В), pbs_resources_sunos4(7В),
pbs_resources_unicos8(7В), pbs_server_attributes(7В),
pbs_resources_irix6(7В), pbs_resources_linux(7В).

Розмір QueSizeResAvailGet(Que q, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що доступно для
завдання, що виконуються з цього q (Que ресурси_доступні.назва атрибут).
Викликайте цю функцію для ресурсів зі значеннями типу Size.
Приклади назв ресурсів: файл, mem, pmem, робочий набір, pf, ppf,
srfs_tmp, srfs_wrk, srfs_big, srfs_fast, sds, psds. Для опису
назв цих ресурсів див pbs_resources_irix5(7В),
pbs_resources_sp2(7В), pbs_resources_sunos4(7В),
pbs_resources_unicos8(7В), pbs_server_attributes(7В),
pbs_resources_irix6(7В), pbs_resources_linux(7В).

рядок QueStringResAvailGet(Que q, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що доступно для
завдання, що виконуються з цього q (Que ресурси_доступні.назва атрибут).
Викликайте цю функцію для ресурсів зі значеннями типу String.
Приклади імен ресурсів: nodes, arch, neednodes. Для опису
назв цих ресурсів див pbs_resources_irix5(7В),
pbs_resources_sp2(7В), pbs_resources_sunos4(7В),
pbs_resources_unicos8(7В), pbs_server_attributes(7В),
pbs_resources_irix6(7В), pbs_resources_linux(7В).

Int QueIntResAssignGet(Que q, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що виділено
завдання, що виконуються з цієї черги (Que resources_assigned.name атрибут).
Викликайте цю функцію для ресурсів зі значеннями типу Int.
Приклади імен ресурсів: cput, pcput, walltime, mppt, pmppt, nice,
procs, mppe, ncpus, pncpus, nodect, srfs_assist, mta,..., mth. Для
опис цих імен ресурсів див pbs_resources_irix5(7В),
pbs_resources_sp2(7В), pbs_resources_sunos4(7В),
pbs_resources_unicos8(7В), pbs_server_attributes(7В),
pbs_resources_irix6(7В), pbs_resources_linux(7В).

Розмір QueSizeResAssignGet(Que q, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що виділено
завдання, що виконуються з цього q (Que resources_assigned.name атрибут).
Викликайте цю функцію для ресурсів зі значеннями типу Size.
Приклади назв ресурсів: файл, mem, pmem, робочий набір, pf, ppf,
srfs_tmp, srfs_wrk, srfs_big, srfs_fast, sds, psds. Для опису
назв цих ресурсів див pbs_resources_irix5(7В),
pbs_resources_sp2(7В), pbs_resources_sunos4(7В),
pbs_resources_unicos8(7В), pbs_server_attributes(7В),
pbs_resources_irix6(7В), pbs_resources_linux(7В).

рядок QueStringResAssignGet(Que q, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я що виділено
завдання, що виконуються з цього q (Que resources_assigned.name атрибут).
Викликайте цю функцію для ресурсів зі значеннями типу String.
Приклади імен ресурсів: nodes, arch, neednodes. Для опису
назв цих ресурсів див pbs_resources_irix5(7В),
pbs_resources_sp2(7В), pbs_resources_sunos4(7В),
pbs_resources_unicos8(7В), pbs_server_attributes(7В),
pbs_resources_irix6(7В), pbs_resources_linux(7В).

(3) Посадові функції

рядок JobIdGet( робота робота )
Повертає ідентифікатор завдання Job. невстановлене значення: NULLSTR

рядок JobNameGet( робота робота )
Повертає атрибут Job_Name завдання Job. невстановлене значення: NULLSTR

рядок JobOwnerNameGet( робота робота )
Повертає атрибут Job_Owner завдання Job. невстановлене значення: NULLSTR

рядок JobEffectiveUserNameGet( робота робота)
Повертає атрибут euser завдання Job.

рядок JobEffectiveGroupNameGet(Job робота)
Повертає атрибут egroup завдання Job. невстановлене значення: NULLSTR

Int JobStateGet ( робота робота )
Повертає атрибут job_state завдання Job.

Повернене значення:
ТРАНЗИТ, У ЧЕРГІ, УТРИМАННЯ, ОЧІКУВАННЯ, БІГ, ВИХІД, -1 (не встановлено)
значення)

Int JobPriorityGet( робота робота )
Повертає атрибут Priority завдання Job. невстановлене значення: 0

Int JobRerunFlagGet( робота робота )
Повертає атрибут Rerunable завдання Job.
Повернене значення: FALSE, TRUE, -1 (не встановлене значення)

Int JobInteractiveFlagGet( робота робота )
Повертає інтерактивний атрибут завдання Job.
Повернене значення: FALSE, TRUE. не встановлене значення: FALSE

DateTime JobDateTimeCreatedGet(Job робота)
Повертає атрибут ctime завдання Job. не встановлене значення:
(0|0|0@-1:-1:-1)

рядок JobEmailAddrGet( робота робота )
Повертає атрибут Mail_Users завдання Job. невстановлене значення: NULLSTR

рядок JobStageinFilesGet( робота робота )
Повертає атрибут stagein завдання Job. невстановлене значення: NULLSTR

рядок JobStageoutFilesGet( робота робота )
Повертає атрибут stageout завдання Job. невстановлене значення: NULLSTR

Int JobIntResReqGet(Job робота, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я відповідно до вимог
робота (Робота Resource_List.name атрибут). Викличте цю функцію для
ресурси зі значеннями типу Int. Зразки імен ресурсів
є: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Для опису цих
назви ресурсів див pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

приклад:
Int cputReq;
// Умови повернення cput вимога of робота
cputReq = JobIntResReqGet(завдання, "cput");

Розмір JobSizeResReqGet(Job робота, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я відповідно до вимог
робота (Робота Resource_List.name атрибут). Викличте цю функцію для
ресурси зі значеннями типу Size. Зразки імен ресурсів
є: файл, mem, pmem, робочий набір, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Для опису цих ресурсів
імена, див pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

приклад:
Розмір memReq;
// Умови повернення пам'ять вимога of робота
memReq = JobSizeResReqGet(завдання, "пам'ять");

рядок JobStringResReqGet(Job робота, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я відповідно до вимог
робота (Робота Resource_List.name атрибут). Викличте цю функцію для
ресурси зі значеннями типу String. Зразки імен ресурсів
є: вузли, арка, потрібнівузли. Для опису цих ресурсів
імена, див pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

приклад:
рядок вузли;
// Умови повернення вузли вимога власність of
// робота
вузли = JobStringResReqGet(завдання, «вузли»);

Int JobIntResUseGet(Job робота, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я використовується роботою (робота
ресурси_використані.назва атрибут). Викликайте цю функцію для ресурсів за допомогою
значення типу Int. Приклади імен ресурсів: cput, pcput,
walltime, mppt, pmppt, nice, procs, mppe, ncpus, pncpus, nodect,
srfs_assist, mta,..., mth. Для опису цих імен ресурсів,
побачити pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

приклад:
Int walltUse;
// Умови повернення кількість of walltime використовуваний by
// робота
walltUse = JobIntResUseGet(завдання, "стінний час");

Розмір JobSizeResUseGet(Job робота, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я використовується роботою (робота
ресурси_використані.назва атрибут). Викликайте цю функцію для ресурсів за допомогою
значення типу Size. Приклади імен ресурсів: файл, пам'ять,
pmem, робочий набір, pf, ppf, srfs_tmp, srfs_wrk, srfs_big, srfs_fast,
sds, psds. Опис цих імен ресурсів див
pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

приклад:
Розмір srfsUse;
// Умови повернення кількість of srfs_fast використовуваний by
// робота
srfsUse = JobSizeResUseGet(завдання, "srfs_fast");

рядок JobStringResUseGet(Job робота, рядок ім'я)
Повертає значення ресурсу, указаного в ім'я використовується роботою (робота
ресурси_використані.назва атрибут). Викликайте цю функцію для ресурсів за допомогою
значення типу String. Приклади імен ресурсів: вузли,
арка, потрібнівузли. Опис цих імен ресурсів див
pbs_resources_irix5(7В), pbs_resources_sp2(7В),
pbs_resources_sunos4(7В), pbs_resources_unicos8(7В),
pbs_server_attributes(7В), pbs_resources_irix6(7В),
pbs_resources_linux(7В).

(4) Функції, пов’язані з CNode

Установка CNode AllNodesGet(void)
Повертає список вузлів, якими керує сервер, що працює на
місцевий господар. Це також може включати ті вузли, які були вказані
у файлі конфігурації планувальника, для якого записує планувальник
хоче, щоб система періодично перевіряла інформацію, як-от стан,
власність тощо. Побачити pbs_sched_basl(8В) для обговорення
формат файлу конфігурації.
УВАГА: цю функцію потрібно викликати зсередини sched_main() so
що на кожній ітерації планування найновіші Установка CNode
структура повертається. Не викликайте це з заяви про призначення
призначений для ініціалізації глобальної змінної, як тільки оператор
викликати один раз.

CNode AllNodesLocalHostGet(void)
Повертає об’єкт CNode, який представляє локальний хост. Це
проста функція для виклику некластеризованих систем, де лише 1 CNode
існує. невстановлене значення: NOCNODE
УВАГА: цю функцію потрібно викликати зсередини sched_main() (Або
із функцій, викликаних sched_main), щоб за кожного
ітерація планування, найновіша CNode структура є
повернувся. Не викликайте це з призначеного оператора призначення
ініціалізувати глобальну змінну, оскільки оператор буде лише викликаний
один раз

рядок CNodeNameGet(CNode вузол)
Повертає унікальне (офіційне) ім’я вузла (тобто ім’я хосту ResMom
у моделі 1 мама/вузол). Це повертає той самий рядок, що й був
вказаний у файлі конфігурації. невстановлене значення: NULLSTR

рядок CNodeOsGet(CNode вузол)
Повертає архітектуру ОС вузла (тобто «irix5», «sp2»). не встановлено
значення: NULLSTR

Int CNodeStateGet( CNode вузол )
Повертає стан вузла.

Повернене значення:
CNODE_OFFLINE, CNODE_DOWN, CNODE_FREE, CNODE_RESERVE,
CNODE_INUSE_EXCLUSIVE, CNODE_INUSE_SHARED, CNODE_UNKNOWN

Int CNodeTypeGet( CNode вузол )
Повертає тип вузла.

Повернене значення:
CNODE_TIMESHARED, CNODE_CLUSTER, CNODE_UNKNOWN

рядок CNodePropertiesGet(CNode вузол)
Повертає розділений комами список інших імен, під якими відомий вузол
( властивості, інше ім'я мережі). Наприклад,
"babbage.OpenPBS.org", можливо, назва вузла, але вона також може бути відома
через "babbage1, babbage2". невстановлене значення: NULLSTR

рядок CNodeVendorGet(CNode вузол)
Повертає назву постачальника апаратного забезпечення машини (тобто
"sgi", "ibm"). невстановлене значення: NULLSTR

Int CNodeNumCpusGet(CNode вузол)
Повертає кількість процесорів, підключених до вузла. не встановлене значення:
-1

Розмір CNodeMemTotalGet( CNode вузол, рядок тип )
Повертає загальну пам'ять тип для вузла. тип є довільним
рядок, який автор планувальника визначає в планувальнику
конфігураційний файл. невстановлене значення: -1b
приклад:
// отримати загальний фізичний пам'ять
CNodeMemTotalGet(вузол, "справжній")
// отримати загальний віртуальний пам'ять
CNodeMemTotalGet(вузол, "віртуальний")

Розмір CNodeMemAvailGet( CNode вузол, рядок тип )
Повертає доступну пам'ять для тип для вузла. тип є довільним
рядок, який автор планувальника визначає в планувальнику
конфігураційний файл. невстановлене значення: -1b
Таким чином, приклади дзвінків будуть такими:
// отримати доступний фізичний пам'ять
CNodeMemAvailGet(вузол, "справжній")
// отримати доступний віртуальний пам'ять
CNodeMemAvailGet(вузол, "віртуальний")

Int CNodeIdletimeGet( CNode вузол )
Повертає кількість секунд, протягом яких не було жодного натискання клавіші чи руху миші
відбувається на будь-якому терміналі, підключеному до вузла. невстановлене значення: -1

Поплавок CNodeLoadAveGet( CNode вузол )
Повертає середнє завантаження вузла для всіх процесорів. невстановлене значення: -1.0

Int CNodeCpuPercentIdleGet( CNode вузол )
Повертає відсоток часу простою всіх процесорів вузла
пережили.

Int CNodeCpuPercentSysGet( CNode вузол )
Повертає відсоток часу, який мають усі процесори вузла
витрачено на виконання коду ядра.

Int CNodeCpuPercentUserGet( CNode вузол )
Повертає відсоток часу, який мають усі процесори вузла
витрачено на виконання коду користувача.

Int CNodeCpuPercentGuestGet( CNode вузол )
Повертає відсоток часу, який мають усі процесори вузла
витратив на роботу гостьової операційної системи.

Int CNodeNetworkBwGet( CNode вузол, рядок тип )
Повертає пропускну здатність мережі вузла тип у байтах/секунду.
тип визначається автором планувальника в планувальнику
конфігураційний файл. невстановлене значення: -1
Деякі приклади викликів:
CNodeNetworkBwGet( вузол, "хіпі" );
CNodeNetworkBwGet( вузол, "fddi" );

Розмір CNodeDiskSpaceTotalGet(CNode вузол, рядок ім'я)
Повертає загальний простір вузла на диску, визначений за ім'я де ім'я
це ім'я пристрою, довільно визначене автором планувальника в
файл конфігурації планувальника. невстановлене значення: -1b
приклад:
CNodeDiskSpaceTotalGet( вузол, "/scratch2" );

Розмір CNodeDiskSpaceAvailGet(CNode вузол, рядок ім'я)
Повертає доступний простір вузла на диску, ідентифікований за ім'я де
ім'я довільно визначається автором планувальника в планувальнику
конфігураційний файл. невстановлене значення: -1b
приклад:
CNodeDiskSpaceAvailGet( вузол, "/scratch1" );

Розмір CNodeDiskSpaceReservedGet(CNode вузол, рядок ім'я)
Повертає зарезервований простір вузла на диску (квоту користувача?), ідентифікований за
ім'я де ім'я довільно визначається автором планувальника в
файл конфігурації планувальника. невстановлене значення: -1b
приклад:
CNodeDiskSpaceReservedGet( вузол, "/scratch1" );

Int CNodeDiskInBwGet( CNode вузол, рядок ім'я )
Повертає пропускну здатність запису (байт/с) ідентифікованого диска вузла
by ім'я . невстановлене значення: -1
приклад:
CNodeDiskInBwGet( вузол, "/швидко" );

Int CNodeDiskOutBwGet( CNode вузол, рядок ім'я )
Повертає пропускну здатність читання (байт/с) диска вузла, ідентифікованого за
ім'я . невстановлене значення: -1
приклад:
CNodeDiskOutBwGet( вузол, "/великий" );

Розмір CNodeSwapSpaceTotalGet( CNode вузол, рядок ім'я )
Повертає загальний простір вузла під час обміну, визначений за ім'я де ім'я
довільно визначається автором планувальника в планувальнику
конфігураційний файл. невстановлене значення: -1b
приклад:
CNodeSwapSpaceTotalGet( вузол, "первинний" );

Розмір CNodeSwapSpaceAvailGet( CNode вузол, рядок ім'я )
Повертає доступний простір вузла під час обміну, ідентифікований за ім'я де ім'я
це ім'я пристрою, довільно визначене автором планувальника в
файл конфігурації планувальника. невстановлене значення: -1b
приклад:
CNodeSwapSpaceAvailGet( вузол, "вторинний" );

Int CNodeSwapInBwGet( CNode вузол, рядок ім'я )
Повертає швидкість підкачки пристрою підкачки вузла, ідентифікованого за ім'я.
приклад:
CNodeSwapInBwGet(вузол, «вторинний»);

Int CNodeSwapOutBwGet( CNode вузол, рядок ім'я )
Повертає швидкість підкачки пристрою підкачки вузла, ідентифікованого за
ім'я. невстановлене значення: -1
приклад:
CNodeSwapOutBwGet(вузол, «первинний»);

Розмір CNodeTapeSpaceTotalGet( CNode вузол, рядок ім'я )
Повертає загальний простір вузла на стрічці, визначений за ім'я де ім'я
довільно визначається автором планувальника в планувальнику
конфігураційний файл. невстановлене значення: -1b
приклад:
CNodeTapeSpaceTotalGet(вузол, "4 мм");

Розмір CNodeTapeSpaceAvailGet( CNode вузол, рядок ім'я )
Повертає доступний простір вузла на стрічці, ідентифікований за ім'я де
ім'я довільно визначається автором планувальника в планувальнику
конфігураційний файл. невстановлене значення: -1b
приклад:
CNodeTapeSpaceAvailGet(вузол, "8 мм");

Int CNodeTapeInBwGet( CNode вузол, рядок ім'я )
Повертає пропускну здатність запису (байт/с) ідентифікованої стрічки вузла
by ім'я . невстановлене значення: -1
приклад:
CNodeTapeInBwGet( вузол, "4 мм" );

Int CNodeTapeOutBwGet( CNode вузол, рядок ім'я )
Повертає пропускну здатність читання (байт/с) ідентифікованої стрічки вузла
by ім'я . невстановлене значення: -1
приклад:
CNodeTapeOutBwGet( вузол, "8 мм" );

Розмір CNodeSrfsSpaceTotalGet( CNode вузол, рядок ім'я )
Повертає загальний простір вузла на пристрої srfs, ідентифікованому за ім'я
де ім'я довільно визначається автором планувальника в
файл конфігурації планувальника. невстановлене значення: -1b
приклад:
CNodeSrfsSpaceTotalGet(вузол, "/швидко");

Розмір CNodeSrfsSpaceAvailGet( CNode вузол, рядок ім'я )
Повертає доступний простір вузла на пристрої srfs, визначеному ім'я
де ім'я довільно визначається автором планувальника в деяких
конфігураційний файл. невстановлене значення: -1b
приклад:
CNodeSrfsSpaceAvailGet( вузол, "/великий" );

Розмір CNodeSrfsSpaceReservedGet(CNode вузол, рядок ім'я)
Повертає загальний обсяг зарезервованого простору вузла на пристрої srfs
визначені ім'я де ім'я довільно визначається планувальником
writer у файлі конфігурації планувальника. невстановлене значення: -1b
приклад:
CNodeSrfsSpaceReservedGet( вузол, "/швидко" );

Int CNodeSrfsInBwGet( CNode вузол, рядок ім'я )
Повертає пропускну здатність запису (байт/с) пристрою srfs вузла
визначені ім'я . невстановлене значення: -1
приклад:
CNodeSrfsInBwGet(вузол, "/швидкий");

Int CNodeSrfsOutBwGet( CNode вузол, рядок ім'я )
Повертає пропускну здатність читання (байт/с) пристрою srfs вузла
визначені ім'я . невстановлене значення: -1
приклад:
CNodeSrfsOutBwGet(вузол, "/великий");

(5) Різні функції

DateTime datetimeGet()
отримує поточну дату/час.

Int datetimeToSecs(ДатаЧас dt)
повертає # секунд з епохи (початок часу UNIX -
00:00:00, 1 січня 1970 р.) для вказаної дати/часу dt.

Int JobAction( робота робота, Int дії, рядок парам )
Виконує дію on робота з парам вказується в залежності від
дії. дію може бути: SYNCRUN, ASYNCRUN, DELETE, RERUN, HOLD,
RELEASE, SIGNAL, MODIFYATTR, MODIFYRES де:
дію Опис
=============== ==========================
SYNCRUN пробіжки робота синхронно,
сенс call до
JobAction() волі тільки
повертати коли робота має
почалася біг or коли
an помилка має було
стикалися.
Парам значення:
ім'я of господар(и) до пробіг
робота під.

АСИНКРУН пробіжки робота асинхронно,
сенс call до
JobAction() волі повертати
негайно as скоро as
пробіг запросити is
підтверджено by PBS сервер,
та НЕ обов'язково коли
робота має почалася
виконання.
Парам значення:
ім'я of господар(и) до пробіг
робота під.

DELETE видаляє роботу.
Парам значення:
"deldelay=<# of секунд>"
- затримка # of seconds
між відправка
of СИГТЕРМ та SIGKILL
до робота перед тим
отримання видалено.

ПОВТОРИТИ повторює біг робота,
який включає в себе закінчення
Сесія лідер of
робота та повернення робота
до у черзі стан.

ВТРАТИ місць один or більше тримає
on роботу.
Парам значення:
"u", "о", "s", "uo", "ос",
"uos"
- тип of тримає до місце
on робота: u (сер), інший),
s (система).

РЕЛІЗ видаляє or релізи
тримає розміщений on робочих місць.
Парам значення:
"u", "о", "s", "uo", "ос",
"uos"
- тип of тримає до видаляти
від робота: u (сер), інший),
s (система).

СИГНАЛ посилає a сигналізувати до
виконання роботу.
Парам значення:
"HUP", "SIGHUP",...

MODIFYATTR змінює зазначений
атрибут of робота до
даний значення, коли
attrib_name is
!= "Список_ресурсів" or
"ресурси_використані".
Парам значення:
"назва_аттриба=значення"

МОДИФІКУЄ змінює робота
Список_ресурсів
атрибут даний
res_name та
res_value:
Resource_List.res_name=
res_value
Парам значення:
"res_name=res_val"
парам значення залежить від дії. Укажіть NULLSTR, якщо немає значення для
цей параметр бажаний.
Повернене значення: SUCCESS або FAIL.
ПРИМІТКА. Будь-які нерозпізнані дію ігнорується.
приклад:
// пробіг робота j синхронно
JobAction(j, SYNCRUN, NULLSTR);

// пробіг робота j асинхронно on господар "db"
JobAction(j, ASYNCRUN, "дб");

// видаляти робота j
JobAction(j, ВИДАЛИТИ, NULLSTR);

// видаляти робота j з a затримка of 5 сухий
// між відправка of СИГТЕРМ та
// SIGKILL
JobAction(j, ВИДАЛИТИ, "deldelay=5");

// повторювати робота j
JobAction(j, ПОВТОРИТИ, NULLSTR);

// місце a u (сер) тримати on робота j
JobAction(j, ТРИМАТИ, "u");

// місце an інший) тримати on робота j
JobAction(j, ТРИМАТИ, "о");

// місце a s(система) тримати on робота j
JobAction(j, ТРИМАТИ, "s");

// місце a дефолт тримати (і) on робота j
JobAction(j, ТРИМАТИ, NULLSTR);

// звільнити u (сер) тримати від робота j
JobAction(j, ВІДПУСТИТИ, "u");

// звільнити інший) тримати від робота j
JobAction(j, ВІДПУСТИТИ, "о");

// звільнити s(система) тримати від робота j
JobAction(j, ВІДПУСТИТИ, "s");

// звільнити дефолт тримати (і) від робота j
JobAction(j, ВІДПУСТИТИ, NULLSTR);

// послати ЗДИХАННЯ сигналізувати до робота j
JobAction(j, СИГНАЛ, "РЕЄСТРАЦІЯ");

// оновлення коментар атрибут of робота
// j до "a повідомлення".
// Команда парам формат це: ім'я_атрибута=нове_значення
// Консультувати PBS документація та цінності a список of робота
// атрибут Імена Що може be вказано.
JobAction(j, MODIFYATTR, "коментар=а повідомлення");
// оновлення Resource_List.cput атрибут of робота
// j до 3600 секунд.
// Команда парам формат це: назва_ресурсу=нове_значення
// Читати pbs_resources* людина сторінка та цінності a список of
// назви_ресурсу Що може be вказано.
JobAction(j, МОДИФІКУЄ, "cput=3600");

QueJobFind(Que ке, весело Int func,Int cpr,Int значення);

QueJobFind(Que ке, весело рядок func,Int cpr, рядок значення);

QueJobFind(Que ке, весело DateTime func,Int cpr,DateTime значення);

QueJobFind(Que ке, весело Розмір func,Int cpr, розмір значення);

де CPR є одним із: OP_EQ, OP_NEQ, OP_LE, OP_LT, OP_GE, OP_GT. функц
це функція, ЄДИНИМ аргументом якої є тип завдання. робота це повернення
тип

Опис: Застосовується функц на кожну роботу в що , і повернути перший
робота, яка задовольняє логічне порівняння: функція (робота) CPR значення

приклад:

Розмір JobVirtualMemAvailGet(Job робота)
{
Розмір sz;

sz = JobSizeResReqGet(завдання, "пам'ять");
повернення (sz);
}
Int JobWallTimeReqGet(Job робота)
{
Int wallt;

wallt = JobIntResReqGet(завдання, "стінний час");
повернення (стіна);
}

Int JobCpuTimeUsedGet(Job робота)
{
Int cput;

cput = JobIntResUseGet(завдання, "cput");
return(cput);
}

Що findQueByName(Установити Що черги, рядок qname)
{
Що q;

foreach(q in черги) {
if ( QueNameGet(q) EQ qname ) {
return(q);
}
}
return(NOQUE);
}
sched_main()
{
сервер s;
Що que;
Установка Що кв;

// отримати місцевий сервер
s = AllServersLocalHostGet();

// отримати фрак of сервер s
sq = ServerQueuesGet(s);

// отримати чергу названий "швидко" від
// місцевий сервер
що = findQueByName( кв, "швидко" );

// знайти 1st робота чий walltime вимога
// is == 300:
QueJobFind(que, JobWallTimeReqGet, OP_EQ, 300);

// знайти 1st робота чий e-mail адреса до
// повідомляти про робота діяльність != "баюкан":
QueJobFind(que, JobEmailAddrGet, OP_NEQ,
"баюкан");

// знайти 1st робота Що було створений після
// or on 3 / 3 / 1997:
QueJobFind(que, JobDateTimeCreatedGet, OP_GE,
(3|3|1997));

// знайти 1st робота Що було створений після
// 3:3:44:
QueJobFind(que, JobDateTimeCreatedGet, OP_GT,
(3:3:44));

// знайти 1st робота Що було створений після
// 3:3:44 on 3 / 3 / 1997:
QueJobFind(que, JobDateTimeCreatedGet, OP_GT,
(3|3|1997@3:3:44));

// знайти 1st робота чий центральний процесор час використовуваний < 1600:
QueJobFind(que, JobCpuTimeUsedGet, OP_LT, 1600);

// знайти 1st робота чий віртуальний пам'ять
// вимога <= 300 Мб:
QueJobFind(que, JobVirtualMemAvailGet, OP_LE,
300 Мб);
}

робота QueJobFind( Що це, що веселощі Int функція, Int серцево-легенева реанімація)

робота QueJobFind( Що це, що веселощі рядок функція, Int серцево-легенева реанімація)

робота QueJobFind( Що це, що веселощі DateTime функція, Int серцево-легенева реанімація)

робота QueJobFind( Що це, що веселощі Розмір функція, Int серцево-легенева реанімація)

де CPR може бути одним із таких: OP_MAX, OP_MIN, функц це
функція, єдиним аргументом якої є тип Job.

Опис: повертає завдання із знайденим максимальним або мінімальним значенням
функція (робота) оскільки це застосовується до кожної роботи в що .

приклад:
Int JobCpuTimeReqGet(Завдання робота)
{
Int cput;

cput = JobIntResReqGet(завдання, "cput");
return(cput);
}
sched_main()
{
Що que;
робота робота;

// знайти робота з найвищий центральний процесор час
// вимога:
робота = QueJobFind(que, JobCpuTimeReqGet, OP_MAX);

// знайти робота з мінімальний центральний процесор час
// вимога:
робота = QueJobFind(que, JobCpuTimeReqGet, OP_MIN);
}

Що QueFilter(Que ке, весело Int func,Int cpr,Int значення)

Що QueFilter(Que ке, весело рядок func,Int cpr, рядок значення)

Що QueFilter(Que ке, весело DateTime func,Int cpr, дата значення)

Що QueFilter(Que ке, весело Розмір func,Int cpr, розмір значення)

де CPR може бути одним із таких: OP_EQ, OP_NEQ, OP_LE, OP_LT,
OP_GE, OP_GT, функц це функція, єдиний аргумент якої має тип Job.

Опис: Застосовується функц на кожну роботу в що , і повертає новий запит
містить усі роботи, які задовольняють умову порівняння:
функція (робота) CPR значення

приклад:
Int JobWallTimeReqGet(Job робота)
{
Int wallt;

wallt = JobIntResReqGet(завдання, "стінний час");
повернення (стіна);
}
sched_main()
{
Що que;
Що newq;

// Повернення a new що що містить всі роботи in "que"
// з a walltime вимога == 300:
newq = QueFilter(que, JobWallTimeReqGet, OP_EQ, 300);

// Повернення a new що що містить всі роботи in "que"
// з an e-mail адреса != "баюкан":
newq = QueFilter(que, JobEmailAddrGet, OP_NEQ, "баюкан");

// Повернення a new що що містить всі роботи in "que"
// створений після or on 3 / 3 / 1997:
newq = QueFilter(que, JobDateTimeCreatedGet, OP_GE,
(3|3|1997));

// Повернення a new що що містить всі роботи in "que"
// створений після 3:3:44:
newq = QueFilter(que, JobDateTimeCreatedGet, OP_GT,
(3:3:44));

// Повернення a new що що містить всі роботи in "que"
// створений після 3:3:44 on 3 / 3 / 1997:
newq = QueFilter(que, JobDateTimeCreatedGet, OP_GT,
(3|3|1997@3:3:44));

// ПРИМІТКА: Команда оригінал "que" is НЕ модифікований
// б то не було.
}

Int Сортувати (Набір робота s, веселощі Int ключ Int замовити)

Int Сортувати (Набір робота s, веселощі рядок ключ Int замовити)

Int Сортувати (Набір робота s, веселощі Поплавок ключ Int замовити)

Int Сортувати (Набір робота s, веселощі DateTime ключ Int замовити)

Int Сортувати (Набір робота s, веселощі Розмір ключ Int замовити)

де s набір завдань для сортування. ключ це ключ сортування, який є a
функція, єдиний аргумент якої має тип Job, порядок це сортування
порядок: ASC, DESC.

Опис: сортує елементи s , у ASCending або
Порядок спадання значень, повернутих ключ функція, як
застосовується до кожного члена набору робіт. The s об'єкт змінено
з цим дзвінком. Це повертає SUCCESS або FAIL залежно від результату
сорт.

Приклади:
Розмір JobMemReqGet(Job робота)
{
Розмір mem;

Член = JobSizeResReqGet(завдання, "пам'ять");
повертати(пам'ять);
}

sched_main()
{
сервер майстер;

Установка робота робочі місця;

Int замовлення;

// отримати місцевий сервер
майстер = AllServersLocalHostGet();

роботи = ServerJobsGet(майстер);
Сортувати (вакансії, JobPriorityGet, ASC);
Сортувати (вакансії, JobIdGet, DESC);
порядок = ASC;
Сортувати (вакансії, JobDateTimeCreatedGet, замовлення);
порядок = DESC;
Сортувати (вакансії, JobMemReqGet, замовлення);
}

Int Сортувати (Набір Що s, веселощі Int ключ Int замовити)

Int Сортувати (Набір Що s, веселощі рядок ключ Int замовити)

Int Сортувати (Набір Що s, веселощі Поплавок ключ Int замовити)

Int Сортувати (Набір Що s, веселощі DateTime ключ Int замовити)

Int Сортувати (Набір Що s, веселощі Розмір ключ Int замовити)

де s набір черг для сортування. ключ це ключ сортування, який є a
функція, єдиний аргумент якої типу Que, порядок це сортування
порядок: ASC, DESC.

Опис: сортує елементи s , у ASCending або
Порядок спадання значень, повернутих ключ функція, як
застосовується до кожного члена набору черг. The s об'єкт є
змінено цим викликом. Це повертає SUCCESS або FAIL залежно від
результат роду.

Приклади:
Розмір QueMemAvailGet(Que ніж)
{
Розмір mem;

Член = QueSizeResAvailGet(que, "пам'ять");
повертати(пам'ять);
}

sched_main()
{
сервер майстер;

Установка Що питання;
Int замовлення;

// отримати місцевий сервер
майстер = AllServersLocalHostGet();

що = ServerQueuesGet(майстер);
Сортувати (питання, QuePriorityGet, ASC);
Сортувати (питання, QueNameGet, ASC);
порядок = DESC;
Сортувати (питання, QueMemAvailGet, замовлення);
}

Int Сортувати (Набір сервер s, веселощі Int ключ Int замовити)

Int Сортувати (Набір сервер s, веселощі рядок ключ Int замовити)

Int Сортувати (Набір сервер s, веселощі Поплавок ключ Int замовити)

Int Сортувати (Набір сервер s, веселощі DateTime ключ Int замовити)

Int Сортувати (Набір сервер s, веселощі Розмір ключ Int замовити)

де s набір серверів для сортування. ключ це ключ сортування, який є
функція, єдиним аргументом якої є тип сервера, порядок є
порядок сортування: ASC, DESC.

Опис: сортує елементи s , у ASCending або
Порядок спадання значень, повернутих ключ функція, як
застосовується до кожного члена набору серверів. The s об'єкт є
змінено цим викликом. Це повертає SUCCESS або FAIL залежно від
результат роду.

Приклади:
Розмір ServerMemAvailGet(Сервер служити)
{
Розмір mem;

Член = ServerSizeResAvailGet(serv, "пам'ять");
повертати(пам'ять);
}

sched_main()
{
Установка сервер сервер;

Int замовлення;

Int ret;

сервер = AllServersGet();

ret = Сортувати (сервер, ServerMaxRunJobsGet, ASC);
Сортувати (сервер, ServerInetAddrGet, ASC);

порядок = DESC;
Сортувати (сервер, ServerMemAvailGet, замовлення);
}

Int Сортувати (Набір CNode s, веселощі Int ключ Int замовити)

Int Сортувати (Набір CNode s, веселощі рядок ключ Int замовити)

Int Сортувати (Набір CNode s, веселощі Поплавок ключ Int замовити)

Int Сортувати (Набір CNode s, веселощі DateTime ключ Int замовити)

Int Сортувати (Набір CNode s, веселощі Розмір ключ Int замовити)

де s набір вузлів для сортування. ключ це ключ сортування, який є a
функція, єдиним аргументом якої є тип CNode, порядок це сортування
порядок: ASC, DESC.

Опис: сортує елементи s , у ASCending або
Порядок спадання значень, повернутих ключ функція, як
застосовується до кожного члена набору вузлів. The s об'єкт є
змінено цим викликом. Це повертає SUCCESS або FAIL залежно від
результат роду.

Приклади:
Розмір CNodeMyMemAvailGet(CNode cn)
{
Розмір mem;

Член = CNodeMemAvailGet(cn, «віртуальний»);
повертати(пам'ять);
}

sched_main()
{
Установка CNode snode;

Int замовлення;

snode = AllNodesGet();

Сортувати (scnode, CNodeIdletimeGet, ASC);
Сортувати (scnode, CNodeNameGet, ASC);
порядок = DESC;
Сортувати (scnode, CNodeMyMemAvailGet, замовлення);
}

CNode..Get() ФУНКЦІЇ


Значення, що повертаються функціями CNode..Get(), розглянутими в попередньому розділі, є
отримані шляхом надсилання запитів ресурсів до MOM CNode на кожній ітерації планування.
Наприклад, CNodeLoadAveGet(вузол) поверне значення, отримане від деякого <host
resource> запит (це може бути рядок «loadave»), надісланий до MOM вузла. The
Зіставлення " -> CNode..Get()" встановлюються внутрішньо, але їх можна
змінено або більше відображень можна додати за допомогою файлу конфігурації планувальника. Конфігурація
файл обговорюється в pbs_sched_basl(8В).
Уже встановлені відображення наведено в наступному:

Для всіх архітектур:

CNode..Get() фактичний call господар ресурс
======================== =============
CNodeOsGet(вузол) арка
CNodeLoadAveGet(вузол) loadave
CNodeIdletimeGet(вузол) Час простою

Використовуйте basl2cB онлайн за допомогою сервісів onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

Команди Linux

Ad