תוכנה רצה מלא זמן

  • פותח הנושא LM87
  • פורסם בתאריך

LM87

New member
תוכנה רצה מלא זמן

יש לי מחשב חדש עם אובונטו והוא די חזק (16 ג'יגה זכרון ומאבד I7). הבעיה היא יש לי תוכנה של חישובים כבדים עם עבודה עם קבצי טקטס, ללא גרפיקה, שהרצה בודדת לוקחת מספר שעות (כ 8 שעות). בזמן זה המחשב אינו "מרגיש רע" ויתר תוכנות רצות כרגיל (אני יכול בלי בעיה להריץ במקביל עוד משהו כמו התקנות וגלישה וזה לא "תקוע" אלא פועל כרגיל. יש לי תחושה שהתכונה אינה מנצלת כמו שצריך את המשאבים של המחשב (יתכן שאם הייתי מריץ אותה "בכל הכוח" המחשב היה נתקע לחצי שעה ואז מוציא לי קובץ פלט). האם אפשר לשנות את זה?
את התכונה אני מריץ דרך הטרמינל עם פקודה בודדת של a.out .
יש לי את הקוד מקור של התוכנה.
 

אורון47

New member
אולי עם הפקודה nice. יכול להיות שגם rlimit (נדמה לי) יעזור.

ואם יש לך קוד מקור, או אולי הרשאות root, יתכן שהתוכנית יכולה לנסות לקבל משאבים מוגברים ממערכת ההפעלה.
 

LM87

New member
אני די חדש בתחום, אז לא הבנתי את התושבה שלך

אתה יכול לפרט מה אני צריך לעשות?
 

BravoMan

Active member
לא בטוח שיש מה לעשות...

כדי שתוכנה תנצל מעבד מרובה ליבות ובצורה מלאה, היא צריכה להיות כתובה בצורה מקבילית.
צריך גם, שהבעיה תהיה פריקה לצורה כזו של מימוש - כלומר, שיהיו חלקים של החישוב שיכולים לרוץ במקביל.
&nbsp
אם אני זוכר נכון ולא מתבלבל בינך לבין משתמש אחר, התוכנה שאתה מדבר עליה כתובה למעשה ב-Fortran.
זו שפה עתיקה שאין בה כלים מובנים למקביליות, ואני בכלל לא בטוח אם ניתן לנצל איתה מעבדים מודרניים במלואם.
לא בטוח גם עד כמה קוד מכונה שמיוצר ממנה יעיל.
&nbsp
ולבסוף - ייתכן מאוד שגם קוד החישוב עצמו כתוב לא טוב, במיוחד אם נכתב ע"י אדם שאינו מתכנת במקצועו.
&nbsp
דבר אחד פשוט שאתה יכול לנסות, במידה ויש לך כמה קבצים, זה להפעיל את התוכנה כמה פעמים במקביל.
תדאג לעשות את זה מתוך תיקיות שונות כדי שלא ייווצר בלגן בקבצים.
&nbsp
שים לב שאתה יכול לפתוח כמה חלונות מסוף שאתה רוצה, הם לא יפריעו אחד לשני.
 

LM87

New member
זכרת נכון, זה אכן קוד פורטרן

וכמו שהבנת, האיש שכתב את התוכנה אינו מפתח במקצועו (גם אני לא, אבל לפחות זכיתי ללומד לתכנת בתיכון ולתרגל עבודה עם קוד C במהלך השנים האחרונות).
&nbsp
הרעיון של לפתוח שני טרמינלים במקביל הוא רעיון פשוט וגאוני! עכשיו רק לשאלה איך זה פועל "בקישקעס" של המחשב: האם כל אחת מהרצות פוגעת במהירות של השניה? כלומר האם יש ליבת מעבד אחת "עסוקה" בשני הפעולות או שמערכת הפעלה יודעת לתקן את זה שלא היה לי ליבה אחת עובדת ואחת נחה?
 

BravoMan

Active member
"מסוף" הוא תוכנה רגילה כמו כל תוכנה.

בפועל, במערכת הפעלה מודרנית כמו זו שאתה משתמש בה, רצים המון תהליכים במקביל.
יש תהליך שאחראי על תקשורת, יש תהליך שאחראי לצייר את שולחן העבודה, יש כל מיני יישומונים שפועלים ברקע, ועוד ועוד.
&nbsp
תמיד יש הרבה יותר תהליכים ממה יש ליבות במחשב ביתי, ולו החזק והחדיש ביותר.
&nbsp
בכל מערכת הפעלה יש מרכיב שנקרא "מתזמן" schedular.
מערכת הפעלה נותנת זמן לכל תהליך לרוץ, וגם מנסה לעשות את זה בצורה כמה שיותר חכמה.
&nbsp
כדי להבין איך כל זה עובד באמת, יש קורס שלם במדעי המחשב.
ככל שזה נוגע עליך, אין באמת מה לעשות, כי אלה לא "קישקעס" שאתה יכול לשלוט בהם בתור משתמש.
תנסה להפעיל כמה עותקים של התוכנה במקביל, ותראה אם זה משפר את המצב או לא.
&nbsp
כמו שכתבתי קודם, יש הרבה מאוד גורמים שונים שמשפיעים על יעילות התוכנה, אז עד שלא תנסה, אי אפשר באמת לדעת.
אפילו מתכנתים מומחים בנושא צריכים לעשות בדיקות כדי לוודא יעילות תוכנות.
&nbsp
בהצלחה!
&nbsp
נ.ב.:
קרא כאן:
http://www.thegeekstuff.com/2013/08/nice-renice-command-examples/
ייתכן שתוכל לתעדף את התוכנה שלך, אבל שוב - לא מובטח שזה ישפר ביצועים.
 
למעלה