מהדורת ליבת לינוקס 6.0

לאחר חודשיים של פיתוח, Linus Torvalds הציג את המהדורה של ליבת Linux 6.0. השינוי המשמעותי במספר הגרסה נובע מסיבות אסתטיות ומהווה צעד פורמלי להקלה על אי הנוחות של צבירת מספר רב של בעיות בסדרה (לינוס התבדח שהסיבה לשינוי מספר הסניף הייתה סביר יותר שנגמרו לו האצבעות ואצבעות כדי לספור מספרי גרסאות). בין השינויים הבולטים: תמיכה בכתיבה אסינכרונית מאוחסנת ב-XFS, דרייבר הבלוק ublk, אופטימיזציה של מתזמן המשימות, מנגנון לאימות פעולה נכונה של הקרנל, תמיכה בצופן הבלוק ARIA.

חידושים מרכזיים בקרנל 6.0:

  • תת-מערכת דיסק, קלט/פלט ומערכות קבצים
    • מערכת הקבצים XFS הוסיפה תמיכה בכתיבת אחסון אסינכרוני באמצעות מנגנון io_uring. מבחני ביצועים שנערכו באמצעות כלי fio (חוט אחד, גודל בלוק 1kB, 4 שניות, כתיבה רציפה) מראות עלייה בפעולות קלט/פלט לשנייה (IOPS) מ-600k ל-77k, מהירות העברת נתונים מ-209MB/s ל-314MB/s, וירידה בהשהיה מ-854ns ל-9600ns (פי 120).
    • מערכת הקבצים Btrfs מיישמת גרסה שנייה של הפרוטוקול לפקודת "שלח", המיישמת תמיכה במטא נתונים נוספים, שליחת נתונים בבלוקים גדולים יותר (יותר מ-64K) והעברת היקפים בצורה דחוסה. הביצועים של פעולות קריאה ישירה הוגדלו משמעותית (עד פי 3) עקב קריאה בו-זמנית של עד 256 סקטורים. הפחתת מחלוקת הנעילה והאצת בדיקת מטא נתונים על ידי הפחתת מטא נתונים שמורים עבור רכיבים דחויים.
    • פעולות ioctl חדשות EXT4_IOC_GETFSUUID ו-EXT4_IC_SETFSUUID נוספו למערכת הקבצים ext4 כדי לאחזר או להגדיר את ה-UUID המאוחסן בבלוק העל.
    • מערכת הקבצים F2FS מציעה מצב צריכת זיכרון נמוכה, המייעל את הפעולה במכשירים עם כמות קטנה של זיכרון RAM ומאפשר להפחית את צריכת הזיכרון במחיר של ביצועים מופחתים.
    • נוספה תמיכה עבור אימות כונן NVMe.
    • שרת NFSv4 מיישם מגבלה על מספר הלקוחות הפעילים, המוגדרת כ-1024 לקוחות חוקיים עבור כל גיגה-בייט של זיכרון RAM במערכת.
    • יישום הלקוח של CIFS שיפר את הביצועים במצב שידור רב-ערוצי.
    • דגל חדש FAN_MARK_IGNORE נוסף למערכת המשנה למעקב אחר אירועים ב-fanotify FS כדי להתעלם מאירועים ספציפיים.
    • ב-Overlayfs FS, כאשר הוא מותקן על גבי FS עם מיפוי מזהה משתמש, ניתנת תמיכה נכונה עבור רשימות בקרת גישה תואמות POSIX.
    • נוסף את מנהל ההתקן של בלוק ublk, שמעביר את ההיגיון הספציפי לצד תהליך הרקע בחלל המשתמש ומשתמש בתת המערכת io_uring.
  • שירותי זיכרון ומערכת
    • תכונות חדשות נוספו לתת-מערכת DAMON (Data Access MONitor), המאפשרות לא רק לנטר את גישת התהליך ל-RAM ממרחב המשתמש, אלא גם להשפיע על ניהול הזיכרון. בפרט, הוצע מודול חדש "LRU_SORT", המספק קיבוץ מחדש של רשימות LRU (פחות לאחרונה בשימוש) כדי להגביר את העדיפות של דפי זיכרון מסוימים.
    • היכולת ליצור אזורי זיכרון חדשים יושמה באמצעות היכולות של האפיק CXL (Compute Express Link), המשמש לארגון אינטראקציה במהירות גבוהה בין ה-CPU להתקני זיכרון. CXL מאפשר לך לחבר אזורי זיכרון חדשים המסופקים על ידי התקני זיכרון חיצוניים ולהשתמש בהם כמשאבי שטח כתובות פיזיים נוספים כדי להרחיב את זיכרון הגישה האקראית (DDR) או הזיכרון הקבוע (PMEM) של המערכת.
    • פתרו בעיות ביצועים עם מעבדי AMD Zen שנגרמו על ידי קוד שנוסף לפני 20 שנה כדי לעקוף בעיית חומרה בכמה ערכות שבבים (נוספה הוראת WAIT נוספת כדי להאט את המעבד כך שערכת השבבים הספיקה להיכנס למצב סרק). השינוי הביא להפחתת הביצועים בעומסי עבודה המתחלפים לעתים קרובות בין מצבי סרק לעסוק. לדוגמה, לאחר השבתת הפתרון לעקיפת הבעיה, הציונים הממוצעים של מבחן tbench עלו מ-32191 MB/s ל-33805 MB/s.
    • קוד עם היוריסטיקה הוסר מתזמן המשימות, מה שמבטיח העברה של תהליכים למעבדים הכי פחות טעונים, תוך התחשבות ברווח החזוי בצריכת האנרגיה. המפתחים הגיעו למסקנה כי ההיוריסטיקה אינה שימושית מספיק וכי קל יותר להסיר אותה ולהעביר תהליכים ללא הערכה נוספת בכל פעם שהעברה כזו עלולה לגרום לצריכת חשמל נמוכה יותר (לדוגמה, כאשר מעבד היעד נמצא בשכבת הספק נמוכה יותר). השבתת ההיוריסטיקה הובילה להפחתה בצריכת החשמל בעת ביצוע משימות אינטנסיביות, למשל, במבחן פענוח הווידאו, צריכת החשמל ירדה ב-5.6%.
    • חלוקת המשימות על פני ליבות המעבד במערכות גדולות עברה אופטימיזציה, מה ששיפר את הביצועים עבור סוגים מסוימים של עומס עבודה.
    • ממשק ה-I/O האסינכרוני של io_uring מציע דגל חדש, IORING_RECV_MULTISHOT, המאפשר לך להשתמש במצב Multi-shot עם קריאת המערכת recv() כדי לבצע מספר פעולות קריאה מאותו שקע רשת בבת אחת. io_uring תומך גם בהעברת רשת ללא חציצה ביניים (אפס עותק).
    • הטמיע את היכולת להכניס תוכניות BPF המחוברות ל-uprobe למצב שינה. BPF גם מוסיף איטרטור חדש ksym לעבודה עם טבלאות סמל ליבה.
    • ממשק "efivars" המיושן ב-sysfs, המיועד לגישה למשתני אתחול UEFI, הוסר (ה-efivarfs הוירטואלי FS משמש כעת באופן אוניברסלי לגישה לנתוני EFI).
    • לכלי השירות perf יש דוחות חדשים לניתוח התנגשויות נעילה והזמן שהמעבד מבצע בביצוע רכיבי ליבה.
    • הגדרת CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 הוסרה, שאפשרה את בניית הליבה במצב האופטימיזציה "-O3". יצוין כי ניתן לבצע ניסויים עם מצבי אופטימיזציה על ידי העברת דגלים במהלך ההרכבה ("הפוך KCFLAGS=-O3"), והוספת הגדרה ל-Kconfig דורשת פרופיל ביצועים שניתן לחזור עליו, מה שמראה כי פתיחת לולאה בשימוש במצב "-O3" נותנת יתרון בהשוואה לרמת האופטימיזציה "-O2".
    • התווסף ממשק ניפוי באגים כדי לקבל מידע על פעולתם של "מכווצות זיכרון" בודדים (מטפלים שנקראים כאשר אין מספיק זיכרון ואריזת מבני נתונים של ליבה כדי להפחית את צריכת הזיכרון שלהם).
    • עבור הארכיטקטורות OpenRISC ו-LoongArch, מיושמת תמיכה באפיק PCI.
    • עבור ארכיטקטורת RISC-V, הרחבה "Zicbom" יושמה לניהול מכשירים עם DMA שאינו קוהרנטי למטמון.
  • וירטואליזציה ואבטחה
    • נוסף מנגנון אימות RV (Runtime Verification) כדי לוודא פעולה נכונה במערכות אמינות במיוחד המבטיחות ללא תקלות. האימות מתבצע בזמן ריצה על ידי הצמדת מטפלים לנקודות מעקב שבודקות את התקדמות הביצוע בפועל מול מודל דטרמיניסטי ייחוס קבוע מראש של המכונה המגדיר את ההתנהגות הצפויה של המערכת. אימות עם המודל בזמן ריצה ממוקם כשיטה קלת משקל וקלה יותר ליישום לאישור נכונות הביצוע במערכות קריטיות, משלימה שיטות אימות אמינות קלאסיות. בין היתרונות של RV היא היכולת לספק אימות קפדני ללא הטמעה נפרדת של המערכת כולה בשפת מידול, כמו גם תגובה גמישה לאירועים בלתי צפויים.
    • רכיבי ליבה משולבים לניהול מובלעות המבוססים על טכנולוגיית Intel SGX2 (Software Guard eXtensions), המאפשרת ליישומים לבצע קוד באזורי זיכרון מוצפנים מבודדים, אליהם יש לשאר המערכת גישה מוגבלת. טכנולוגיית Intel SGX2 נתמכת בשבבי Intel Ice Lake ו-Gemini Lake, ושונה מ-Intel SGX1 בהוראות נוספות לניהול זיכרון דינמי של מובלעות.
    • עבור ארכיטקטורת x86, הוטמעה היכולת להעביר את ה-Seed עבור מחולל המספרים הפסאודו אקראיים דרך הגדרות מאתחול האתחול.
    • למודול SafeSetID LSM יש כעת את היכולת לנהל שינויים שבוצעו באמצעות הקריאה setgroups(). SafeSetID מאפשר לשירותי מערכת לנהל משתמשים בצורה מאובטחת ללא הסלמה של הרשאות (CAP_SETUID) וללא השגת הרשאות שורש.
    • נוספה תמיכה בצופן בלוק ARIA.
    • מודול ניהול האבטחה מבוסס BPF מספק את היכולת לצרף מטפלים לתהליכים בודדים ולקבוצות תהליכים (cgroups).
    • נוסף מנגנון עם יישום Watchdog כדי לזהות ניתוקים של מערכות אורחים על בסיס ניטור פעילות vCPU.
  • תת מערכת רשת
    • מטפלים להפקה ובדיקת SYN Cookies נוספו לתת-מערכת BPF. כמו כן נוספה סט פונקציות (kfunc) לגישה ושינוי מצב החיבורים.
    • המחסנית האלחוטית נוספה תמיכה במנגנון MLO (Multi-Link Operation), המוגדר במפרט WiFi 7 ומאפשר למכשירים לקבל ולשלוח נתונים בו-זמנית באמצעות פסי תדרים וערוצים שונים, לדוגמה, ליצור בו-זמנית מספר ערוצי תקשורת בין נקודת גישה להתקן לקוח.
    • הביצועים של פרוטוקול TLS המובנה בקרנל שופרו.
    • נוספה אפשרות שורת פקודה של ליבה "hostname=" כדי לאפשר להגדיר את שם המארח בשלב מוקדם בתהליך האתחול, לפני הפעלת רכיבי שטח המשתמש.
  • Оборудование
    • מנהל ההתקן i915 (Intel) מספק תמיכה עבור כרטיסי מסך נפרדים של Intel Arc (DG2/Alchemist) A750 ו-A770. הוצע יישום ראשוני של תמיכה עבור Intel Ponte Vecchio (Xe-HPC) ו- Meteor Lake GPUs. העבודה נמשכת לתמיכה בפלטפורמת Intel Raptor Lake.
    • מנהל ההתקן של amdgpu ממשיך לספק תמיכה לפלטפורמות AMD RDNA3 (RX 7000) ו-CDNA (Instinct).
    • מנהל ההתקן של נובו עיבד מחדש את קוד התמיכה עבור מנועי תצוגה של NVIDIA nv50 GPU.
    • נוסף מנהל התקן DRM חדש של logicvc עבור מסכי LogiCVC.
    • מנהל ההתקן v3d (עבור Broadcom Video Core GPU) תומך בלוחות Raspberry Pi 4.
    • נוספה תמיכה עבור Qualcomm Adreno 619 GPU למנהל ההתקן msm.
    • נוספה תמיכה עבור ARM Mali Valhall GPU למנהל ההתקן של Panfrost.
    • נוספה תמיכה ראשונית עבור מעבדי Qualcomm Snapdragon 8cx Gen3 המשמשים במחשבים ניידים Lenovo ThinkPad X13s.
    • נוספו מנהלי התקן סאונד לפלטפורמות AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake ו-Mediatek MT8186.
    • נוספה תמיכה עבור מאיצי למידת מכונה של Intel Habana Gaudi 2.
    • נוספה תמיכה עבור ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

במקביל, קרן התוכנה החופשית של אמריקה הלטינית יצרה גרסה של הליבה החופשית לחלוטין 6.0 - Linux-libre 6.0-gnu, מנוקה מאלמנטים של קושחה ומנהלי התקנים המכילים רכיבים או קטעי קוד שאינם חופשיים, שהיקפם הוא מוגבל על ידי היצרן. המהדורה החדשה מבטלת את השימוש בבלובים במנהל התקן האודיו CS35L41 HD ובמנהל ההתקן UCSI עבור מיקרו-בקרים STM32G0. קובצי DTS עבור שבבי Qualcomm ו-MediaTek נוקו. השבתה של כתמים במנהל ההתקן של MediaTek MT76 עובדה מחדש. קוד ניקוי כתמים מעודכן בדרייברים ותתי המערכות של AMDGPU, Adreno, Tegra VIC, Netronome NFP ו-Habanalabs Gaudi2. הפסיק לנקות את מנהל ההתקן של VXGE, שהוסר מהקרנל.

מקור: OpenNet.ru

הוספת תגובה