מידע כללי על Condor

הינה הידע העיקרי של Condor והשימוש בסיסי שלו. 

מה זה Condor ?

אילו מחשבים נמצאים ב Condor Pool ?

אז איך עושים "משהו" - condor ?

כיצד מריצים עבודה ב - Condor ?

מהו קובץ ה - cmd ?

פקודות ב - condor

קימפול תוכניות עם condor

mpi ב condor

למה העבודה ששלחתי ל-condor לא רצה?

עוד מספר דברים חשובים

מה זה Condor ?

ה-condor הינה מערכת לעיבוד מקבילי, כלומר הרצת מספר עבודות שיתבצעו על מחשבים שונים בו-זמנית. המערכת מנהלת מעקב אחר העבודות המתבצעות באמצעות מחשב המפקח על העבודות (condor-manager.cs.tau.ac.il). מחשב מרכזי זה מנהל את תורי העבודה, ואת ניהול המשאבים (כמו למשל המחשבים הזמינים להריץ תכניות) בזמן נתון. באתר של Condor ניתן למצוא את המדריך המלא ואת המגבלות של ה-condor.

מדריך ללימוד עצמי ע"י Condor Tutorial (self training) by Alain Roy

מצגת על Condor:  מצגת Office  קובץ להורדהמצגת Open/LibreOffice קובץ להורדה

 Subscribe to Condor Group:
parallel-at-tau@googlegroups.com

 

שים לב! הרשימת תפוצה הזאת מנוהלת על-ידי סטודנטים שמשתמשים בעיבוד מקבילי. זוהי לא הרשימת תפוצה של צוות סיסטם או רשימת תפוצה רישמית של Condor!
(חזרה לראש עמוד)

אילו מחשבים נמצאים ב Condor Pool ?

מה זה Condor Pool ?Condor Pool, הוא מאגר של מחשבים, שבהם מערכת Condor משתמשת להריץ עבודות. המחשבים האלה לא זמינים תמיד בשביל Condor, אלא מערכת עיבוד מקבילי מנצלת בהם רק כאשר יש להם משאבים פנויים. הינה נתונים של כמה מחשבים שנמצאים במאגר Condor:

 

Condor Pool
זיכרון מעבד שם מחשב
 16 G Quad-Core AMD Opteron(tm) Processor 2354 rack-bio-eran- 01-13
 24 G Intel(R) Xeon(R) CPU  E5540  @ 2.53GHz rack-bio-eran-14-22
 256 G Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz  rack-iscb- 01-27
 288 G Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz  rack-iscb- 30-37
 1 TB Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz  rack-iscb-101-103
 256 G  Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz  rack-pace- 01-11
 16GB  Quad-Core AMD Opteron(tm) Processor 2382  safraf- 30-36
 16GB  Quad-Core AMD Opteron(tm) Processor 2382  wn- 20-29

 

שימוש בפקודה condor_status אפשר לקבל את הרשימה פרטנית ואקטואלית של המחשבים האלה עם מידע מצב שלהם.
(חזרה לראש עמוד)

אז איך עושים "משהו" - condor ?

הדרך הפשוטה ביותר לבדוק את condor הינה באמצעות "הרצת" command-line פשוטה ע"י הפקודה:

condor_run /bin/date

פקודה זאת תשלח את העבודה למערכת, תטפל בעבודה כבכל עבודה אחרת ותציג את הפלט. למשך כל זמן ביצוע הפקודה ה-shell יהיה במצב נעול (כלומר לא ניתן להקיש פקודות).
(חזרה לראש עמוד)

כיצד מריצים עבודה ב - Condor ?

יחידת העבודה הבסיסית ב-condor הינה job. בקובץ cmd מתוארת סביבת הריצה שלו ואת מהלכו. בהמשך ניתן לראות דוגמא ל-job. את ה-job, יש לשלוח למערכת ע"י הפקודה: {condor_submit {job name שלאחריה יתקבל מספר job במערכת. ה-job יתבצע תחת קוד המשתמש ששלח את העבודה למערכת. לכן יש לודא כי יש הרשאות ריצה וה-path-ים מתאימים להרצה מכל מחשב במערכת (יש להשתמש ב-path מוחלט). ניתן להוריד job כזה לדוגמא בשם sample1.cmd קובץ להורדה ואת התכנית sample1 קובץ להורדה(זוהי תכנית מקומפלת ולא source) אשר מציגה שם מחשב בו היא מתבצעת בהפרשים של 5 שניות. בכדי להריץ את העבודה יש לבצע את הפעולות הבאות:

  1. ליצור ספריה בשם condor תחת ה-home directory.
  2. יש לשים את שני הקבצים בספריה זו.
  3. בקובץ sample1.cmd יש לעדכן את ה-path (הנתיב) ל-directory הנוכחי כפי שמופיע בפלט הפקודה pwd.
  4. את העבודה יש להריץ באמצעות הפקודה condor_submit sample1.cmd
  5. לקבצי ה-output יש לתת הרשאה מתאימה. מומלץ להשתמש ב-scratch כמקום אחסון הפלטים של condor. 
  6. חשוב לתת הרשאת ריצה ( X ) לקבצים

 

  • ה - condor מופעל על כל מחשבי ה - Linux בבי"ס. כל פקודה מופעלת על המחשב בו היא הוקשה.

הוספת global- מאפשרת הפעלת הפקודה בכל המחשבים בו זמנית.

  • עבודות צריכות להיות באורך של 20 דקות, אם היא ארוכה יותר צריך לחלק אותה לכמה חלקים.

(חזרה לראש עמוד)

מהו קובץ ה - cmd ?

ה-cmd הינו הכלי העיקרי לתאר עבודה למערכת. להלן דוגמא בסיסית של קובץ cmd:

 

מזהה את התכנית שיש להריץ {Executable={cmd_file_name
דרישות מהמחשבים עליהם תרוץ התכנית. הדרישות חייבות להיות בינאריות (בניגוד ל-Rank). דבר חשוב נוסף הוא ש condor מוסיף אוטומטית מספר דרישות לפי המחשב ממנו נשלחת העבודה (ניתן לראות מהן בקישור ל condor_submit למטה). אחת הדרישות המוספות היא ש Arch יהיה זהה ל Arch של המחשב המגיש. במחשבי 32bit ה Arch הוא INTEL ולעומת זאת ב 64bit הוא X86_64. לכן יש להתייחס לדרישה זו כאשר מגישים עבודה מ 32bit ל 64bit ולהפך. Requirements = Memory >= 32 && OpSys == "Linux"
הגדרת מיון על דרישות במקרה זה מחשבים בעלי יותר מ-64Mb ומחשבים בעלי פחות מכך. ניתן להגדיר כמובן Rank=Memory ואז המחשבים יוקצו לפי גודל הזכרון - מהגדול לקטן. Rank = Memory >= 64
הספריה שתשמש את התכנית שלנו כספריית בית {Initaldir = {directory
 מתי לשלוח הודעות למשתמש. ניתן לקבל את כל ההודעות, הודעות על error וכו' notification ={Always|Complete|Error|Never}
קובץ ה-log שבתוכו ירשמו הודעות המערכת מהרצת העבודות Log=foo.log
 מספר העבודות מסוג מסויים שיש להריץ. אם לא מציינים מספר - זה יריץ עותק אחד של התכנית. {Queue {n
קביעת סביבת הרצה של התכנית. כדי להשתמש ב-checkpoints יש לבחור Standard (אך יש מקבלות שעליהן ניתן לקרוא פה)

ניתן להריץ תכניות תחת Vanilla ואז אין צורך לקמפל את התכניות מחדש.

Universe={Vanilla/MPI/PVM/Standard.../}

בכדי שתכנית תרוץ בצורה תקינה יש צורך ב-Execute ו- Queue

פרטים מלאים ניתן למצוא באתר של condor manual תחת הפקודה condor_submit.
(חזרה לראש עמוד)

פקודות ב - condor

פקודות שימושיות:

פירוש פרמטר פקודה
שליחת עבודה לתור. program_name/command condor_submit
הצגת תור העבודות הכללי. -global condor_q
ניתוח הסיבה שהעבודה אינה רצה. מאפשרת הצגת נתונים של כל התורים במערכת. job-id -analyze condor_q
הצגת נתונים על עבודות שנשלחו מהמחשב המקומי.
הוספת global- מאפשרת הצגת נתונים של כל התורים במערכת.
-run -global condor_q
מציג פרטים רבים לגבי הריצה של העבודה. -global -long job-id condor_q
ביטול עבודה לפי המזהה שלה, או את כל העבודות שנשלחו ע"י משתמש במחשב מסוים.
ניתן לבטל את כל העבודות ע"י הוספת פרמטר all.
job-id/all condor_rm
מאפשר הצגה גרפית של קובץ הלוג. log_file_name condor_logview

 

פקודות נוספות
פירוש פקודה
Display information about jobs in queue. condor_q
Displays information about jobs in queue for all resources in condor pool. condor_q -global
Queue jobs for execution under Condor. condor_submit
Display status of the Condor pool. condor_status
Send a checkpoint command to jobs running on specified hosts. condor_checkpoint
Create a relinked executable for submission to the standard Universe. condor_compile
Find machine(s) in the pool that can be used with minimal impact on currently running Condor jobs. condor_findhost
Add a Globus resource to a Condor pool best meet any specified constraints. condor_glidein
View log of condor jobs completed to date. condor_ history username
Remove jobs from the Condor queue. condor_rm
Put jobs in the queue into the hold state. condor_hold
Release held jobs in the Condor queue. condor_release
Update scheduling information to the central manager. condor_reschedule
Submit a shell command-line as a Condor job. condor_run
Display historical information about the Condor pool. condor_stats
Display and summarize job statistics from job log files. condor_userlog
Manage user priorities, lists the active users along with their priorities. condor_userprio
Vacate jobs that are running on the specified hosts. condor_vacate
Vacate jobs in the Condor queue from the hosts where they are running. condor_vacate_job
Displays condor version information. condor_version
Watches a log file, and indicates when a specific job (or all jobs mentioned in the log) have completed. condor_wait log_filename

(חזרה לראש עמוד)

קימפול תוכניות עם condor

חלק מיכולותיו של ה-condor, באות לידי ביטוי רק ע"י שימוש בקומפילציה בסביבה של קונדור. בכדי לקמפל תכנית עם הקומפיילר של קונדור יש להשתמש ב-condor_compile באופן הבא:
condor_compile gcc {ושאר האופציות של gcc}
אין צורך לקמפל מחדש את כל התכניות. אופציה זו דרושה רק למימושים מיוחדים של condor

(חזרה לראש עמוד)

 

 

שימוש ב MPI ב CONDOR

MPI מאפשר תקשורת בין תהליכים. במקטע זה נדגיש את השינויים הנדרשים כדי לאפשר עבודה עם MPI בסביבה של ביה"ס ולא נעסוק בהסבר אודות MPI באופן כללי.
הרצת עבודת MPI בסביבת Condor מתבצעת כדלהלן:
  • יש לשלוח עבודת ריצה כ- Universe מסוג Parallel עם מספר המחשבים בהם רוצים להשתמש.
  • ניתן לשלוח עבודות רק ממחשב אחד מסויים (בניגוד לעבודות Condor כלליות). כיום יש לשלוח את העבודות מ-nova.
  • לאחר עבודה נשלחה, המערכת תמתין עד אשר תקצה את המחשבים הנדרשים (זה יכול לקחת זמן מה).
  • כאשר המערכת הצליחה להקצות את מספר המחשבים הדרושים, יש להריץ script שיוציא לקובץ את שמות המחשבים שהוקצו לעבודה ולאחר מכן תופע פקודת mpirun עם פרמטרים מתאימים.
  • בעת ריצה מקבילית, ייתכן שהפלט לא יהיה מסודר לפי הסדר הלוגי של התכנית כיון שכל עותק של התכנית מתקדם באופן שונה בהתאם לעוצמת המחשב והעומס שיש עליו.
אופן ההרצה של mpi באמצעות script הרצה (CMD):
 
  • ראשית יש לבצע הידור (compilation) לתכנית.

    להלן תכנית לדוגמא: buffon_mpi.c קובץ להורדה המחשבת את הערך של לפי המחט של בופון.
  • את קומפילציה יש לבצע באמצעות הפקודה: 
    /usr/bin/mpicc   buffon_mpi.c   -lm  -o buffon_mpi
    יש שילוב הספריה המתמטית (lm) נדרשת בשל הפונקציות בתכנית ואינה דרושה בכל שימוש ב-mpi.
  • יש להוריד ולשים את ה-script הבא במקום נגיש:  mp1script קובץ להורדה שירוץ לאחר הקצאת כל המחשבים הנדרשים לריצת התכנית.
  • יש להוריד את הקובץ:  mpi_script.cmd קובץ להורדה שישמש כתכנית הרצה.
    את ההרצה יש לבצע באמצעות הפקודה: 
    condor_submt mpi_script.cmd
    בקובץ ה-cmd  ישנם מספר פרמטרים ייחודיים ל- mpi:
     
    • השורה: universe=parallel נועדה לאפשר צבירת משאבים לצורך ריצה מסונגרנת של כל התהליכים.
    • הפרמטר machine_count מגדיר את מספר המכונות שנרצה לאגור יחדיו לצורך ההרצה. אנחנו מבקשים לא לשים ערך גבוה מדי כיון שהוא עלול לפגוע במשתמשים אחרים וגם זמן ההמתנה יהיה ארוך.
    • תכנית ההרצה תהיה ה-script ששמו mp1script שיבצע את ההרצאה בפועל עם המחשבים שהוקצו. script זה יקבל כפרמטר את התכנית להרצה.
    • כדי להעביר ל-script את התכנית להרצה השתמשנו ב: arguments = buffon_mpi. זוהי התכנית להרצה בצורה מקבילית.
    •  

למה העבודה ששלחתי ל-condor לא רצה?

ייתכנו מספר סיבות. הנפוצות ביותר הן:
1. העבודה שלך דורשת יותר מדי זיכרון, ולכן אף מחשב לא מתאים להריץ אותה. ניתן לבדוק זאת ע"י condor_q. העמודה SIZE מציינת את גודל הזיכרון שדורשת העבודה במגהבייט. ערכים מעל 3000 מגהבייט הם יותר מדי. במקרה זה יש להגיש מחדש את העבודה, אך לחלק אותה לחלקים קטנים יותר שידרשו פחות זיכרון.

2. condor לא מוצא את הקובץ שלתוכו רציתם את הפלט או שממנו לקחתם את הפלט. זה קורה כאשר קבצים אלה נמצאים תחת

/home/<research_group>

בזמן שבקובץ ה-submit צוין ה-path האמיתי:

/specific/...

יש לציין את ה-path המתחיל ב-/home/...

3. Requirements - צוינו דרישות שאינן ניתנות למילוי

(חזרה לראש עמוד)

עוד מספר דברים חשובים

אין להריץ עבודות ארוכות שלא דרך ה-condor - עבודות כאלו עלולות להיות מבוטלות ללא הודעה מוקדמת. נא לשלוח הודעה בדבר שימוש לthe condor' קונדור ובמיוחד לציין אילו עבודות מבוצעות על ה-condor בתחילת המחקר ובסופו, ניתן להגביל מספר תהליכים שירוצו במקביל (למשל בשל מחסור ברשיונות). הגבלה זו נעשית באמצעות DAG. בעת שימוש בשיטה זו, נא לא להשתמש בכל הרשיונות הקיימים (ולהשאיר 2 רשיונות למשתמשי On-Line).

 

 

© נכתב ע"י אדי אהרונוביץ', עודכן לאחרונה ע"י אייל חנן יולי 2017