|
לאחרונה רכשתי מחשב נייד חדש. כדי לנצל את התמיכה האחרונה בחומרה ועדכונים
האחרונים ב-ACPI החלטתי לנסות את גרסת הפתוח של הקרנל. התקנתי את קרנל 2.6.0-test1 )מאז יצא עדכון, כרגע רץ על המחשב 2.6.0-test2(. התרשמות היא
שהקרנל די יציב לשימוש יומיומי בתחנות עבודה (המחשב משמש אותי באופן
שוטף). לא מומלץ להשתמש בו לשרתי Production, אך לתחנות העבודה הוא די
יציב.
אחת התכונות החדשות בקרנל 2.6 היא אפשרות שליטה בתדר במעבדים שתומכים בכך.
נשאלת השאלה מדוע שנרצה להאט את המעבד שלנו ? אפשר לחשוב על מספר תשובות
אפשריות:
- תכונה זו חשובה עבור ניהול הספק במחשבים ניידים (או לשמירת אנרגיה
בכלל, גם במחשבים שולחניים). בעבודה שולחנית שוטפת, לדוגמא בעת עריכת מסמך
במעבד תמלילים, המעבד נמצא רוב הזמן ב-idle, ממתין לקלט מהמשתמש. במצב
כזה אין צורך במהירות מלאה של המעבד, אפשר להאיט אותו ולחסוך בהספק הנצרך
(ובמחשבים ניידים, כתוצאה מכך הארכת חיי הסוללה).
- אפשרויות להדמיה של מחשבים איטיים יותר, לדוגמא: כיצד מתנהג יישום
מסויים שכתבת על מחשב איטי יותר.
- כי אנחנו יכולים ;-)
מאחר ולא מצאתי חומר בנושא, נכתב מאמר זה, שאמור להוות גם מבוא לקרנל 2.6.
השאיפה היא לכתוב סדרה של מאמרים מקוריים נוספים ב-Whatsup בעתיד, אם ימצא הזמן לכך.
במאמר זה:
<ol id="mozToc">
<!--mozToc h1 1 h2 2 h3 3 h4 4 h5 5 h6 6-->
אודות המעבר מקרנל 2.4 ל- 2.6
הגדרת הקרנל לתמיכה ב-CPU
Frequency scaling
השליטה בתדר המעבד
סיכום וקריאה מומלצת
אודות המעבר מקרנל 2.4
ל- 2.6
למרות שקיימים backports לקרנל מסדרה 2.4 לחלק רחב מהתכונות שנוספו בסדרה
2.6 (את רובם, כולל CPU Frequency Scaling, ניתן למצוא בסדרת הפאצ'ים
של Con Kolivas ), הוחלט ללכת על סדרה 2.6 עבור השימוש השוטף ועבור
מאמר זה, בין היתר כדי לעודד שימוש ודיווח על תקלות ובעיות שיעזרו בייצוב
הקרנל.
<small style="color: rgb(102, 102, 102);">
מאמר זה אינו מהווה מבוא או מדריך לתצורה, הידור והתקנה של הקרנל,
כדאי להביא מידע זה מהבית.</small>
אם ההפצה שלכם לא מספקת חבילה בינארית של קרנל 2.6, עליכם לבנות אותו
בעצמכם מן הסתם. יש מספר דברים שכדאי לתת עליהם את הדעת לפני שבונים
את הקרנל בעצמכם:
- modutils שמשמש בסדרה 2.4 אינו מתאים לקרנל 2.6. יש להתקין את חבילת
module-init-tools.
<small style="color: rgb(102, 102, 102);">
משתמשי Gentoo שיבצעו emerge ל-development-sources יקבלו את
module-init-tools בתור תלות, משתמשי הפצות אחרות YMMV
</small>
- קרנל 2.6 מציג מערכת קבצים חדשה מבוססת זכרון בשם sysfs. מערכת
קבצים זו מאפשרת לייצא מבני מידע (תרגום של data structures), מאפייניהם
ויצירת קשר ביניהם ל-userspace. אנו נשתמש במערכת קבצים זו כדי לקבל מידע
ושליטה על תדר המעבד.
את sysfs עוגנים בתיקית /sys. אם אין כזו, יש ליצור אותה. כדי לעגן אותה
לתיקיה יש להריץ את הפקודה הבאה:
<span style="font-style: italic;">mount -t sysfs sysfs /sys
</span><small style="color: rgb(102, 102, 102);">למרות שניתן להשתמש
גם במערכת הקבצים proc לשליטה על תדר המעבד, אפשרות זו אינה מועדפת,
והשימוש ב-sysfs היא המומלצת.
לעגינה קבועה של sysfs אפשר להוסיף אותה ל-/etc/fstab
משתמשי gentoo אינה צריכים להוסיף שורה ל-fstab, העגינה מתבצעת אוטומטית
</small>
- קרנל 2.4 ביצע עגינה אוטומטית של usbdevfs תחת /proc/bus/usb למידע
וקשר עם התקני USB. בקרנל 2.6 שם מערכת הקבצים שונה ל-usbfs והעגינה אינה
אוטומטית, יש לבצע אותה באופן ידני.
<small style="color: rgb(102, 102, 102);">ב-gentoo אין צורך לעשות
זאת, ה-localmount עושה זאת אוטומטית עבור קרנלים 2.6. מן הסתם זה יהיה כך
גם בהפצות אחרות</small>
- synaptics
הוא מנהל התקן המאפשר ניצול תכונות מיוחד של touchpads במחשבים ניידים
התומכים בכך. אם אתם משתמשים בו, יש להתקין דרייבר
מעודכן עקב הוספת תמיכה בקרנל להתקן זה. בנוסף הצלחתי להפעילו תחת X
רק דרך ה-event interface, אז לזכור לאפשר evdev בעת הגדרת הקרנל.
הגדרת הקרנל לתמיכה
ב-CPU Frequency scaling
רשימת המעבדים ממשפחת x86 התומכים בתכונה זו כוללת:
- AMD Elan - SC400, SC410
- AMD mobile K6-2+
- AMD mobile K6-3+
- AMD mobile Duron
- AMD mobile Athlon
- Cyrix Media GXm
- Intel mobile PIII and Intel mobile PIII-M on certain chipsets
- Intel Pentium 4, Intel Xeon
- Intel Pentium M (Centrino)
- National Semiconductors Geode GX
- Transmeta Crusoe
- VIA Cyrix 3 / C3
<small style="color: rgb(102, 102, 102);"> את הרשימה המלאה של המעבדים,
כולל מעבדים ממשפחות אחרות ניתן למצוא
ב-Documentation/cpu-freq/user-guide.txt תחת תיקיית קוד המקור של הקרנל</small>
כדי לאפשר שליטה בתדר המעבד, בוחרים בתפריט הגדרת הקרנל ב-Power
management options (ACPI, APM, ומשם בוחרים ב-CPU Frequency scaling. שם
מסמנים את האפשרות של ה-scaling, ואז יופיעו אפשרויות חדשות. בוחרים את
האפשרויות המבוקשות ואת התמיכה במעבדים הרצויים.
חשוב להזכיר את אפשרות 'userspace' governor for userspace frequency
scaling. ללא אפשרות זו ניתן לבחור רק בין 2 מצבים קיצוניים בתדר המעבד.
עם אפשרות זאת ניתן להגיע לשליטה טובה יותר בתדר. עוד על כך בהמשך.
לאחר שהגדרנו את הקרנל, הידרנו אותו, התקנו, הגדרנו את מנהל האתחול
ואתחלנו את המחשב עם קרנל 2.6 עובד (אם התמזל מזלנו) אנו מוכנים לשלוט
בתדר המעבד.
השליטה בתדר המעבד
לאחר מסלול היסורים שעברנו הגיע הזמן להנות מפירות עמלנו. קבלת המידע
אודות וקביעת תדר המעבד מתבצעים בעזרת הקבצים בתיקיית
/sys/devices/system/cpu/cpu0/cpufreq/ עבור המעבד הראשון (במקרה יש יותר
מאחד, יהיו תיקיות במקביל עם cpu1 וכן הלאה).
<small style="color: rgb(102, 102, 102);">התיעוד ב-user-guide.txt מציין
את תיקיית /sys/class/cpu/cpu0/cpufreq/, אך נראה שזה לא מעודכן. לא קיימת
תיקיה כזו</small>
המעבד במחשב שלי עובד בתדר 2.4GHz. לקבלת מידע אודות טווח התדרים בו נוכל
להשתמש נוכל לבצע:
# cat/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 2388171 # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 298521
לקבלת מידע אודות התדרים שנוכל להשתמש בהם:
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 298521 597042 895564 1194085 1492606 1791128 2089649 2388171
לקבלת מידע אודות אפשרויות השליטה:
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors performance powersave userspace
כנזכר לעיל, כדי לקבל את אפשרות ה-userspace יש לאפשר זאת בעת תצורת
הקרנל. אפשרויות השליטה המצוינות הן:
- performance: המעבד יעבוד במהירות המקסימלית (2388171 במקרה הזה)
- powersave: המעבד יעבוד במהירות הנמוכה ביותר לשמירת אנרגיה (298521
במקרה הזה)
- userspace: שימוש באחד התדרים המצויינים
ב-scaling_available_frequencies
השולט הנוכחי נקרא governor. הקובץscaling_governor משמש לקבלת מידע
אודות
השולט הנוכחי ולשינויו. לדוגמא:
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor performance
# echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor powersave
הדוגמא הזו מציגה את השולט הנוכחי, ומשנה אותו למצב שמירת אנרגיה, שהוא
התדר המינימלי. היוצא דופן כאן הוא השולט userspace. כאשר משתמשים בו,
נוצר קובץ חדש בשם scaling_setspeed בתיקיה שמאפשר שליטה מדוייקת יותר על
התדר. לדוגמא:
# echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed 2388171
# echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed 1194085
כמו שניתן לראות, כאשר קובעים תדר שלא קיים בטבלת התדרים האפשריים, הערך
הסופי הוא הערך הקרוב בטבלת התדרים
סיכום וקריאה מומלצת
המאמר הזה היה אמור לשמש בתור מבוא לקרנל 2.6 ודוגמא לשימוש ב-sysfs
וניצול תכונות חדשות כגון CPU Frequency scaling בעזרתו.
Gentoo מוזכרת כאן מהסיבה שזו ההפצה שהשתמשתי בה עם קרנל 2.6. משתמשי
הפצות אחרות מוזמנים לחלוק מניסיונם בתגובות.
קריאה מומלצת
אודות הנזכר במאמר הזה אפשר למצוא ב:
תחת תיקית קוד המקור של הקרנל:
החומר בתיקיה Documentation/cpu-freq
Documentation/filesystems/sysfs.txt
The Wonderful World of Linux
2.6 מאת ג'ו פראנביץ'
| |
|
קרנל 2.6 ושליטה בתדר המעבד | כניסה / יצירת מנוי חדש | 11 תגובות |
| ההערות הינן מטעם כותביהן. אין צוות האתר לוקח אחריות על תוכנן |
|
|