HTCondor изменить NUM_CPUS в зависимости от простоя? - PullRequest
1 голос
/ 07 марта 2019

Я хотел бы изменить количество процессоров, основываясь на том, кто работает на машине или нет.Не хочу ПРЕДВАРИТЕЛЬНО выполнять задания, определенные в руководстве.Просто сделайте что-то вроде:

// condor_config file
if (KeyboardIdle < 10)
    NUM_CPUS = 2
else
    NUM_CPUS = 8
endif

Вышеприведенная команда завершится неудачно с: (KeyboardIdle < 10) is not a valid if condition because complex conditionals are not supported.

В любом случае, я могу это реализовать или NUM_CPUS является фиксированной переменной?


Согласно ответу Грега, самый нижний конец моего condor_config таков:

NUM_CPUS = 16
START = (SlotID < 8) || (KeyboardIdle > 10)

Что теоретически разрешает запускать только 8 заданий, но при запуске condor_status myMachine Я получаю:

C:\>condor_status myMachine
Name                       OpSys      Arch   State     Activity LoadAv Mem   ActvtyTime

slot1@myMachine.cluster  WINDOWS    X86_64 Claimed   Busy      1.210 8186  0+00:00:02
slot2@myMachine.cluster  WINDOWS    X86_64 Claimed   Busy      0.500 8186  0+00:00:03
slot3@myMachine.cluster  WINDOWS    X86_64 Claimed   Busy      2.220 8186  0+00:00:01
slot4@myMachine.cluster  WINDOWS    X86_64 Claimed   Busy      1.500 8186  0+00:00:02
slot5@myMachine.cluster  WINDOWS    X86_64 Claimed   Busy      0.600 8186  0+00:00:02
slot6@myMachine.cluster  WINDOWS    X86_64 Claimed   Busy      0.380 8186  0+00:00:02
slot7@myMachine.cluster  WINDOWS    X86_64 Claimed   Busy      1.940 8186  0+00:00:03
slot8@myMachine.cluster  WINDOWS    X86_64 Claimed   Busy      0.880 8186  0+00:00:02
slot9@myMachine.cluster  WINDOWS    X86_64 Claimed   Busy      1.560 8186  0+00:00:02
slot10@myMachine.cluster WINDOWS    X86_64 Claimed   Busy      0.310 8186  0+00:00:02
slot11@myMachine.cluster WINDOWS    X86_64 Claimed   Busy      2.180 8186  0+00:00:02
slot12@myMachine.cluster WINDOWS    X86_64 Claimed   Busy      1.580 8186  0+00:00:02
slot13@myMachine.cluster WINDOWS    X86_64 Claimed   Busy      0.950 8186  0+00:00:02
slot14@myMachine.cluster WINDOWS    X86_64 Claimed   Busy      1.890 8186  0+00:00:02
slot15@myMachine.cluster WINDOWS    X86_64 Claimed   Busy      0.490 8186  0+00:00:02
slot16@myMachine.cluster WINDOWS    X86_64 Claimed   Busy      1.600 8186  0+00:00:01

               Total Owner Claimed Unclaimed Matched Preempting Backfill  Drain

X86_64/WINDOWS    16     0      16         0       0          0        0      0

         Total    16     0      16         0       0          0        0      0

Есть идеи?

1 Ответ

1 голос
/ 11 марта 2019

NUM_CPUS исправлено в HTCondor.Как правило, политика такого рода реализуется путем изменения выражения START, так что существует разное количество слотов, для которых выражение START оценивается как ложное, и, следовательно, не может запускать задания.

Предполагается, что на этом компьютере установлены статические слоты (по умолчанию), выражение START может быть чем-то вроде

START = (SlotID < 3) || (KeyboardIdle > 10)

, то есть начало всегда истинно для слотов 1 и 2 и истинно для остальных слотов, если клавиатура бездействует.

Чтобы быть досадно педантичным, это только контролирует, запускаются ли задания на этой машине в соответствии с использованием клавиатуры.С помощью только что описанной конфигурации полностью простаивающая машина позволит себе заполняться заданиями, и эти задания будут продолжать работать бесконечно, когда пользователь клавиатуры вернется.Если вы хотите выгрузить эти задания, вы также можете использовать выражение с выгрузкой, например

PREEMPT = (SlotID > 3) && (KeyboardIdle < 10)
...