LTO: מה זה וכיצד להשתמש בו ב- Gentoo

מה זה LTO?

LTO הוא ראשי התיבות של אופטימיזציה של זמן קישור. זו פעולה בה המהדר מעכב אופטימיזציות ברגע קישור קבצי המקור, ומאפשר לראות את כל הקבצים המרכיבים קובץ הפעלה יחיד כקובץ יחיד, ובאופן זה ליישם אופטימיזציות בצורה יעילה יותר.

למידע נוסף: הוויקי של GCC.

כדי לראות את היתרונות והחסרונות של LTO: אמות מידה של מפורוניקס

דברים שכדאי לזכור

  • זה לא יציב, זה יכול לגרום לבעיות בחבילות מסוימות.
  • חלק מהחבילות לא יצליחו לקמפל (למידע נוסף על תיקון מאוחר יותר).
  • מומלץ להשתמש בקישור זהב.
  • להשתמש תמיד הגרסה האחרונה של GCC.

זהב, בנוסף לתמיכה בתכונות מתקדמות שהופכות אותו לאטרקטיבי יותר לשימוש LTO, זה מהיר יותר מ גנו ldבמיוחד כשמדובר בתוכניות גדולות, שם זה יכול להיות מהיר פי 5. כדי להשתמש בו, הפעל:

binutils-config --linker ld.gold


שימוש ב- LTO: שיטה מומלצת

במקום להפעיל LTO בעולם (שעלול לגרום לבעיות) עדיף להפעיל אותו בחבילות שאנחנו רוצים. בדרך זו, רק החבילות בהן תרצו ליהנות LTO הם מורכבים באופטימיזציה זו, או הנמנעים ממצב איסוף איטי יותר בתוכניות שאינן נהנות מכך. ניתן להשיג זאת באופן הבא:

בספריה / etc / portage / env, אנו יוצרים את הקובץ LTO.conf ונוסיף את השורות הבאות:

CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos  de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.

אז, להשתמש LTO בחבילה, עלינו רק להכניס את שמו (השם המלא, www-client / firefox, במקום firefox) לקובץ package.env, עם LTO.conf מימינך. להלן דוגמה:

app-emulation/wine LTO.conf
www-client/firefox LTO.conf
sys-devel/gcc LTO.conf
kde-base/kdelibs LTO.conf

כעת עלינו רק לאסוף את החבילות בהן אנו רוצים שישתמשו LTO.


שימוש ב- LTO ברחבי העולם (לא מומלץ)

במקום להגיש מועמדות LTO חבילה אחר חבילה, אנו יכולים ליישם אותה גם ברחבי העולם (וזה מה שאני משתמש בה). כדי ליישם אותו, השלבים הבאים:

אנו עורכים את הקובץ /etc/portage/make.conf ומוסיפים את הדברים הבאים (הם אותם שורות מהקובץ. LTO.conf):

CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos  de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.

בתורו, אנו יוצרים את הקובץ /etc/portage/env/no-LTO.conf ומוסיפים את השורות הבאות:

CFLAGS="${CFLAGS} -fno-lto -fno-use-linker-plugin"
CXXFLAGS="${CXXFLAGS} -fno-lto -fno-use-linker-plugin"
LDFLAGS="${LDFLAGS} -fno-lto -fno-use-linker-plugin"

ובתיק package.env אנו שמים את החבילות שהאוסף שלהן נכשל LTO. הוא הנה שלי package.env (שים לב שאני משתמש nolto.conf במקום non-LTO.conf).

עלינו להוסיף גם LTO משתנה לשימוש של make.conf, זה הכרחי כי המפתחים של ג'נטו הם (לאט לאט) מוסיפים טלאים אופציונליים לשימוש באופטימיזציה זו בחלק מהחבילות.

ברגע שזה נעשה, בואו נמשיך לאסוף מחדש את כל חבילות המערכת:

emerge -e @world @system --keep-going &> errores

על ידי שימוש ב- keep-going, אנו מספרים הובלה להתעלם משגיאות, תוך כדי &> להפנות את הפלט של כל הבאגים לקובץ שנקרא שגיאות, השתמש בקובץ זה כדי לראות אילו חבילות לא מצליחות לקמפל והוסף אותם לרשימת package.env.

ה- &> ימנע מאיתנו את כל הפלט, אם ברצוננו לראות את פלט התהליך, עלינו להשתמש (כשורש) בפקודה זו:

tail -f /var/log/emerge.log

וזה הכל, אני מקווה שלא השארתי שום ספק, אם זה אעודד ואכתוב מאמר על Openmp ו / או גרָפִיט.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   MSX דיג'ו

    ג'נטו, מה ...
    בוא נלך לדבר החשוב: גרפיט!

    1.    x11tete11x דיג'ו

      הגרפיט xD הטיפשי וחושני, אותו דבר תת-נורמלי שפורץ את מערכת ה- xD שלך, אני זוכר שבפעם האחרונה שהשתמשתי בו, זה הספיק כדי לבצע עבור זה איטרציה של 50 פעמים לעשות "הודעה-שלח KDE <3" כך שבאיטרציה מספר 50, הסביבה תתפוצץ לגיהינום חחחחחחחחחחחחחחחחחחחחחחחחחחחחחחח חחחאחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחַ, כן, הלכתי לסיבוב מחדש של xD

    2.    מטייל דיג'ו

      כבר אמרתי שעדיין עודדו אותי והכנתי גרפיט. אבל בכל מקרה, גרפיט (וכל אופטימיזציה אחרת) עובד הכי טוב עם LTO. כמו כן, בניגוד ל- LTO, גרפיט ו- OpenMP נתקלות בבעיה. לא כל התוכניות נהנות מכך, ובאלו שאינן מרוויחות מכך הביצועים יורדים, ולכן במקרה זה עדיף להשתמש בה רק לכמה חבילות.