ככל שמעבדים מרובי ליבות הופכים נפוצים יותר ויותר בשרתים, מחשבים ניידים או מחשבים שולחניים, ואפילו מכשירים ניידים, יותר ויותר יישומים מותאמים לסוג זה של מערכות. עם זאת, לפעמים זה יכול להיות שימושי לקשר תוכנית או תהליך לגרעין ספציפי אחד או יותר. בואו נראה איך להשיג את זה ...
התקן את ערכת המשימות
כלי ערכת המשימות הוא חלק מחבילת "util-linux". רוב הפצות לינוקס מגיעות עם החבילה המותקנת מראש כברירת מחדל. במקרה שמערכת המשימות אינה זמינה, ניתן להתקין אותה באופן הבא:
En דביאן / אובונטו ונגזרות:
sudo apt-get התקנת util-linux
En פדורה ונגזרות:
sudo yum להתקין util-linux
צפה בזיקה של המעבד של תהליך פועל
כדי לאחזר מידע על זיקה של מעבד לתהליך, השתמש בתבנית הבאה:
ערכת משימות -p PID
לדוגמה, כדי לבדוק את הזיקה של המעבד לתהליך עם PID 2915:
מערך המשימות -p 2915
מחזירה את התוצאה:
מסכת הזיקה הנוכחית של pid 2915: ff
ערכת המשימות מחזירה את זיקת המעבד הנוכחית בפורמט מסכת סיביות הקסדצימלי. בדוגמה, הזיקה (המיוצגת במסכת ביטים הקסדצימאלית) תואמת את "11111111" בפורמט בינארי, כלומר התהליך יכול לפעול בכל אחת משמונה ליבות המעבד השונות (0 עד 7).
הסיבית הנמוכה ביותר במסכת סיביות הקסדצימאלית תואמת לליבה מזהה 0, הסיבית השנייה הנמוכה ביותר מימין ללידה מזהה 1, הסיבית הנמוכה השלישית לליבה מזהה 2 וכן הלאה. כך, למשל, זיקת מעבד "0x11" מייצגת מזהי ליבה 0 ו -4.
ערכת המשימות יכולה להראות זיקה למעבד כרשימת מעבדים במקום מסיכת סיביות, וזה הרבה יותר קל לקריאה. כדי להשתמש בפורמט זה, עליך להפעיל מערך משימות עם האפשרות "-c". לדוגמה:
ערכת משימות -cp 2915
מחזירה את התוצאה:
רשימת הזיקה הנוכחית של pid 2915: 0-7
כפה על תהליך להפעלה על גרעין ספציפי
באמצעות מערך המשימות ניתן להקצות תהליך רץ לליבת CPU ספציפית. לשם כך עליך להשתמש בפורמט הבא:
ערכת משימות -p COREMASK PID משימות -cp CORE-LIST PID
לדוגמה, כדי להקצות תהליך ליבות 0 ו -4, תריץ:
ערכת משימות -p 0x11 9030
מה התוצאה מחזירה:
מסכת הזיקה הנוכחית של פיד 9030: ff מסכת הזיקה החדשה של פיד 9030: 11
באופן שווה, אתה יכול לרוץ:
ערכת משימות -cp 0,4 9030
בעזרת האפשרות "-c" תוכלו לציין רשימה של מזהי ליבה מספריים, מופרדים בפסיקים, או שתוכלו לכלול טווחים (למשל, 0,2,5,6-10).
הפעל תוכנית באמצעות גרעין ספציפי
ערכת המשימות מאפשרת גם השקת תוכנית חדשה באמצעות מספר גרעינים ספציפיים. לשם כך, יש להשתמש בו בפורמט הבא:
ערכת משימות של COREMASK
לדוגמה, כדי להפעיל את תוכנית VLC במעבד מזהה 0 של המעבד, השתמש בפקודה הבאה:
ערכת משימות -c 0 vlc
הקדש ליבה רק לתוכנית מסוימת
למרות שמערכת המשימות מאפשרת להקצות תוכנית לליבה מסוימת, אין זה אומר שאין תוכניות או תהליכים אחרים המשתמשים בה. כדי להימנע מכך ולהקדיש גרעין שלם לתוכנית מסוימת, עליך להשתמש בפרמטר הליבה "isolcpus", המאפשר לך להזמין גרעין במהלך ההפעלה.
לשם כך עליך להוסיף את הפרמטר "isolcpus =" בשורת הליבה ב- GRUB. לדוגמא, כדי להזמין ליבות מזהה 0 ו- 1, הוסף "isolcpus = 0,1".
לאחר שתסיים זאת, מתזמן הלינוקס לא יקצה תהליכים רגילים לליבה השמורה, אלא אם כן הוקצה ספציפית למערכת המשימות.
מקור: מודול x & דפי גבר משימות.
פוסט טוב :).
פוסט טוב אבל בלי כוונה לטרול ...
מה התועלת בהקצאת תוכנית לליבה ספציפית ???
אני מתכוון; אם יש לך מחשב עם 12 ליבות, הדבר ההגיוני יהיה שתוכנית מסוימת תבוצע באמצעות אותן 12 ליבות ולא תגביל אותה מכיוון שכך אנו משיגים את הביצועים הגבוהים ביותר האפשריים.
מה שאני כן מועיל היא האפשרות שמאפשרת לנו לא להקצות שום תהליך לליבה מסוימת, ולהשאיר את השימוש הבלעדי בתוכנית מסוימת.
זה הגיוני את מה שאתה מזכיר, בכך שהוא נותן למתכנן להשתמש בכל הליבות, המשאבים מאוזנים יותר, אך לפעמים נדרש ליבה ייעודית, כגון הפעלת מכונה וירטואלית עם משימה ספציפית, הביצועים של אותה מכונה משתפרים באופן משמעותי כאשר אין תהליכים נוספים הפועלים בקרנל שהוקצה.
atte
jvk85321
מְדוּיָק! תודה, jvk! 🙂
אך כשאתה יוצר את המכונה הווירטואלית, היא מבקשת ממך לבחור את כמות המעבדים שהוקצו ... מה השימוש בבחירת ערך זה אם בסופו של דבר מערכת ההפעלה תשמיט זאת ותבצע אותו על כל המעבדים ... לשם הדוגמה היא לא הטובה ביותר ...
כדי לגרום לפלאש לעבוד ב- Windows 8.1 x64, AMD ו- Firefox, הומלץ לבחור שפלאש פועל רק על מעבד אחד, אולם זה לא עבד עבורי. זה יהיה נוח גם אם תוסיפו אותו (אם הוא עדיין לא נמצא שם) למנהלי המשימות של ה- DE השונים, או לפחות ל- KDE.
אה, לא הבנתי את סוף ההערה ... אבל בשביל זה, כל התהליכים במעבד שמריץ את המחשב הווירטואלי יצטרכו להיות אסורים. או הקצה אותם למעבדים אחרים. תגובה מעניינת וטובה מאוד.
משמש ליצירת מחשבי-על גאוניים
זה מובן.
תודה על ההבהרה.
כאשר אתה שומר גרעין לתוכנית ספציפית, מה קורה עם שרשורי הביצוע? במקרה שאתה עושה את זה עם גרעין עם HT, הוא שומר שני שרשורי ביצוע לתוכנית.
פקודה זו אולי לא נראית שימושית במיוחד במחשבים עם מספר ליבות, אך לאלו מאיתנו שיש להם Dual Core זה די מעשי. לדוגמא, יש לי משחק שכשאני פותח הוא משתמש בכל ליבות המעבד ואם יש לי גם תוכניות אחרות שזקוקות למעבד (כמו חיפוש כלשהו עם grep בקבצים גדולים) אז המערכת מאטה. הפיתרון הוא פשוט כמו להגביל את המשחק לשימוש רק באחת מהליבות.
אני מסכים גם עם lf, הם באמת צריכים לשלב את זה במנהלי משימות (אלה שניסיתי עד כה בג'נטו, אני חושב שאף אחד אין את זה), במיוחד כאשר ב- Windows זה משהו שקיים מאז XP (לחיצה ימנית על תהליך> "הגדר זיקה ...") אך לפני זמן מה מצאתי את התסריט הבא שהופך את ערכת המשימות למשהו קצת יותר אינטואיטיבי (פורסם במקור כאן ואפילו מקרים מסוימים מוצגים בהם יש צורך לנהל את השימוש בליבות):
#!/bin/bash
read -p 'Ingrese el ID del proceso en cuestión: ' ID
read -p 'Ingrese la lista de procesadores separados por comas: ' P
echo 'Su ID es '$ID' y los procesadores son '$P
sudo taskset -p -c $P $ID
read -p 'Listo, presione enter para finalizar' P
בשינויים מסוימים ניתן היה לציין את שם התהליך במקום ה- PID (או שהוא מקבל את שניהם וכי הוא מחליט מתי פרמטר זה הוא דבר זה או אחר).
אין ממשק גרפי למערכת משימות עבור משתמשים חדשים זה יהיה נחמד