הינה הידע העיקרי של Condor והשימוש בסיסי שלו.
אילו מחשבים נמצאים ב Condor Pool ?
אז איך עושים "משהו" - 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 משתמשת להריץ עבודות. המחשבים האלה לא זמינים תמיד בשביל Condor, אלא מערכת עיבוד מקבילי מנצלת בהם רק כאשר יש להם משאבים פנויים. הינה נתונים של כמה מחשבים שנמצאים במאגר Condor:
זיכרון | מעבד | שם מחשב |
---|---|---|
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 הינה באמצעות "הרצת" command-line פשוטה ע"י הפקודה:
פקודה זאת תשלח את העבודה למערכת, תטפל בעבודה כבכל עבודה אחרת ותציג את הפלט. למשך כל זמן ביצוע הפקודה ה-shell יהיה במצב נעול (כלומר לא ניתן להקיש פקודות).
(חזרה לראש עמוד)
יחידת העבודה הבסיסית ב-condor הינה job. בקובץ cmd מתוארת סביבת הריצה שלו ואת מהלכו. בהמשך ניתן לראות דוגמא ל-job. את ה-job, יש לשלוח למערכת ע"י הפקודה: {condor_submit {job name שלאחריה יתקבל מספר job במערכת. ה-job יתבצע תחת קוד המשתמש ששלח את העבודה למערכת. לכן יש לודא כי יש הרשאות ריצה וה-path-ים מתאימים להרצה מכל מחשב במערכת (יש להשתמש ב-path מוחלט). ניתן להוריד job כזה לדוגמא בשם sample1.cmd ואת התכנית sample1 (זוהי תכנית מקומפלת ולא source) אשר מציגה שם מחשב בו היא מתבצעת בהפרשים של 5 שניות. בכדי להריץ את העבודה יש לבצע את הפעולות הבאות:
הוספת global- מאפשרת הפעלת הפקודה בכל המחשבים בו זמנית.
ה-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.
(חזרה לראש עמוד)
פירוש | פרמטר | פקודה |
---|---|---|
שליחת עבודה לתור. | 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_compile באופן הבא:
condor_compile gcc {ושאר האופציות של gcc}
אין צורך לקמפל מחדש את כל התכניות. אופציה זו דרושה רק למימושים מיוחדים של condor
ראשית יש לבצע הידור (compilation) לתכנית.
ייתכנו מספר סיבות. הנפוצות ביותר הן:
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