LINUX.ORG.RU

А каков ваш выбор: FRAME_POINTER_UNWINDER или ORC_UNWINDER?

 , unwinder


1

2

Сабж. Как известно, этот выбор у юзеров появился в ядре 4.14.

Разница, напоминаю, такова:

FRAME_POINTER_UNWINDER
...
   The unwinder itself is fast and it uses less RAM than the ORC unwinder, but the kernel text size will grow by
   ~3% and the kernel's overall performance will degrade by roughly 5-10%.

   This option is recommended if you want to use the livepatch consistency model, as this is currently the only
   way to get a reliable stack trace (HAVE_RELIABLE_STACKTRACE).
ORC_UNWINDER
...
   This option enables the ORC (Oops Rewind Capability) unwinder for unwinding kernel stack traces. It uses a
   custom data format which is a simplified version of the DWARF Call Frame Information standard.

   This unwinder is more accurate across interrupt entry frames than the frame pointer unwinder. It also enables a
   5-10% performance improvement across the entire kernel compared to frame pointers.

   Enabling this option will increase the kernel's runtime memory usage by roughly 2-4MB, depending on your kernel
   config.

★★★★★
Ответ на: комментарий от anonymous

Однако, FRAME_POINTER_UNWINDER не только экономнее относится к оперативке, но и спокойно собирается на системах без libelf (да, вот такое нынче ядро; может в самом начале сборки прервать её и затребовать либо доустановить библиотеки, либо выбрать другие опции).

Так что, у обоих вариантов свои плюсы и минусы.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

экономнее относится к оперативке

will increase the kernel's runtime memory usage by roughly 2-4MB

Без комментариев.

спокойно собирается на системах без libelf

А ты знаешь, что зависимости можно доустанавливать? Говорят, помогает.

intelfx ★★★★★
()
$ zgrep -i unwind /proc/config.gz 
# CONFIG_FRAME_POINTER_UNWINDER is not set                                                                                                                   
# CONFIG_ORC_UNWINDER is not set                                                                                                                             
CONFIG_GUESS_UNWINDER=y
Deleted
()
Ответ на: комментарий от intelfx

Без комментариев.

Что «Без комментариев»? Очевидно же, что FRAME_POINTER_UNWINDER сам по себе чуть потяжелее чем ORC_UNWINDER, но, при этом, уже при своей работе экономнее относится к оперативке чем ORC_UNWINDER.

А ты знаешь, что зависимости можно доустанавливать? Говорят, помогает.

Я как раз таки упомянул оба варианта, в т.ч. с доустановкой библиотек. Но, ситуации бывают разные. В т.ч. и когда нет возможности или желания таскать дополнительные библиотеки. И тогда ORC_UNWINDER просто не соберётся.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 2)
Ответ на: комментарий от kirk_johnson

Да Вы ЛОР почитайте. Здесь много вопросов про древние сервера, куда ничего уже не доустановить. И люди там многое компиляют. И это только один из возможных вариантов.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Да Вы ЛОР почитайте. Здесь много вопросов про древние сервера, куда ничего уже не доустановить. И люди там многое компиляют. И это только один из возможных вариантов.

На древних серверах люди не ставят 4.14 :)

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

ну, хз, в описании ничего такого нет. зато есть «Unlike the other unwinders, it has no runtime overhead»

Deleted
()
Ответ на: комментарий от kirk_johnson

Люди свежие ядра куда только не ставят. Пару лет назад поддержку шины EISA из ядра не удалили только потому, что нашёлся один человек, который юзал свежее ядро на машине с этой самой шиной EISA.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Люди свежие ядра куда только не ставят. Пару лет назад поддержку шины EISA из ядра не удалили только потому, что нашёлся один человек, который юзал свежее ядро на машине с этой самой шиной EISA.

И как шина EISA влияет на версию libelf в дистрибутиве, ты мне можешь рассказать?

kirk_johnson ★☆
()
Ответ на: комментарий от saahriktu

Зачем выбрасывать рабочее железо? Работает - не трогай!

Я не понимаю, как железо влияет на наличие libelf в дистрибутиве. Мы не про древность железа, мы про версию дистрибутива тут говорим.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

А если на машине работает какой-нибудь старый дистрибутив без дополнительных репозиториев? libelf там может и не собраться.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

А если на машине работает какой-нибудь старый дистрибутив без дополнительных репозиториев? libelf там может и не собраться.

Это значит ты ленивый упырь, не обновляешь свою софтварную инфраструктуру и усложняешь жизнь коллегам. Не делай так.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Так «Работает - не трогай!» же. А если этот сервер работает годами, должен работать 24 часа в сутки и 7 дней в неделю? Но, вот, внезапно, потребовалось обновить ядро, и удалось выкроить окно чтобы собрать это ядро и перезагрузить. А больше времени и нет. Всё переустанавливать некогда.

Ситуации, повторяю, бывают разные.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Так «Работает - не трогай!» же.

Этот принцип правильно звучит как «не чини то, что не сломано». Есть ещё один: «не сиди на неподдерживаемом старье, иначе это выйдет боком». Они не пересекаются.

kirk_johnson ★☆
()
Ответ на: комментарий от Deleted

А речь не столько про версию, сколько про то, что не везде и не всегда эта библиотека вообще есть. В том же LFS'е её как не было так и нет. А, значит, спокойно можно собрать сколько угодно дистрибутивов и сборок без libelf.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

А речь не столько про версию, сколько про то, что не везде и не всегда эта библиотека вообще есть. В том же LFS'е её как не было так и нет. А, значит, спокойно можно собрать сколько угодно дистрибутивов и сборок без libelf.

Поэтому LFS в production и нет.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Вообще-то, во-первых, на основе LFS'а собирают тот же PiLFS, который много где могут использовать на Raspberry Pi (а на основе PiLFS'а я собирал Pisaahriktux). Во-вторых, в LFS'е доустанавливать можно что угодно, в т.ч. и libelf. Но, вот, __из коробки__ её нет.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Вообще-то, во-первых, на основе LFS'а собирают тот же PiLFS, который много где могут использовать на Raspberry Pi (а на основе PiLFS'а я собирал Pisaahriktux). Во-вторых, в LFS'е доустанавливать можно что угодно, в т.ч. и libelf. Но, вот, __из коробки__ её нет.

Ну собирают и собирают. Я не видел PiLFS в продакшоне, от которого зависит хоть что-то важное. Суть не в этом. Во всех дистрибутивах, которыми люди пользуются для решения не связанных с мастурбацией задач, libelf есть.

P.S. Для RPI есть версия Alpine Linux, которая явно более вменяемая, чем PiLFS.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 4)
Ответ на: комментарий от kirk_johnson

Ультракрасноглазие не для ултракрасноглазия, а для того, чтобы решать задачи наиболее удобным образом.

Для Raspberry Pi чего только нет. Есть CentOS, ALT, Slackware,... Но, для юзеров ядерной консоли PiLFS более чем годен.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Ультракрасноглазие не для ултракрасноглазия, а для того, чтобы решать задачи наиболее удобным образом.

LOL'd. Ты ядро собрать не можешь, потому что libelf не поставить. Где тут удобство-то?

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Поставить и собрать. Я говорил про старые сервера с неопределёнными старыми дистрибутивами.

А на современные дистрибутивы libelf спокойно ставится, даже если это LFS. Но, в формулировке выше было ещё и про желание таскать дополнительные библиотеки. Юзер может осознанно выбрать, чтобы в его системе не было никаких лишних библиотек, включая libelf. И тогда он может собрать себе свежее ядро с FRAME_POINTER_UNWINDER.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

А на современные дистрибутивы libelf спокойно ставится, даже если это LFS. Но, в оригинальной формулировке было ещё и про желание таскать дополнительные библиотеки. Юзер может осознанно выбрать, чтобы в его системе не было никаких лишних библиотек, включая libelf. И тогда он может собрать себе свежее ядро с FRAME_POINTER_UNWINDER.

Чувак, если в его системе уже стоит полноценный тулчейн, то наличие libelf ситуацию вряд-ли изменит. Ты слишком много общаешься со своими воображаемыми друзьями.

kirk_johnson ★☆
()
Ответ на: комментарий от saahriktu

Я говорил про старые сервера с неопределёнными старыми дистрибутивами.

ты там в консоли упоролся, что ли? на такие субстанции никто в здравом уме не будет собирать современные ядра.

Deleted
()
Ответ на: комментарий от saahriktu

Пару лет назад поддержку шины EISA из ядра не удалили только потому, что нашёлся один человек, который юзал свежее ядро на машине с этой самой шиной EISA.

Но не нашлось ни одного, использующего свежее ядро на pre-Pentium-Pro? Не верится.

gag ★★★★★
()
Ответ на: комментарий от kirk_johnson

если в его системе уже стоит полноценный тулчейн, то наличие libelf ситуацию вряд-ли изменит

Что значит «вряд ли изменит»? Кол-во библиотек, определённо, увеличивается.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Ультракрасноглазие

Инфракрасноглазие же. А Ультра- должно быть ультрафиолетоглазие. Это антоним, это про людей, которые не парятся.

Да, вот решил добавить осмысленности дискуссии.

goingUp ★★★★★
()
Ответ на: комментарий от saahriktu

Что значит «вряд ли изменит»? Кол-во библиотек, определённо, увеличивается.

Оммм... Если у тебя в системе стоит gcc и сопутствующий хлам для сборки пакетов, не плевать ли тебе на libelf? Тех, кто отвечает «нет, не плевать, он же увеличит количество библитек кудах-кудах» стоит незамедлительно отправлять в лучшие психиатрические клиники в зоне досигаемости.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от Deleted

на такие субстанции никто в здравом уме не будет собирать современные ядра.

Я уже упомянул выше прецедент, когда 2 года назад нашли машину с EISA и свежим ядром. А EISA «Superseded by PCI (1993)» (c)

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Я уже упомянул выше прецедент, когда 2 года назад нашли машину с EISA и свежим ядром. А EISA «Superseded by PCI (1993)» (c)

Ещё раз спрашиваю: как версия дистрибутива связана с железом?

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

За каждым пакетом надо следить. Отслеживать обновления, собирать новые версии, таскать в каждую новую сборку,... Особенно, если мы говорим про LFS и прочие минималистичные source-based сборки, где юзер выстраивает свою собственную экосистему. И тут даже один единственный пакет может всё рушить.

А вот в бинарных дистрибутивах с их тоннами хлама, конечно, даже сотни пакетов ничего не решают.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

За каждым пакетом надо следить. Отслеживать обновления, собирать новые версии, таскать в каждую новую сборку,... Особенно, если мы говорим про LFS и прочие минималистичные source-based сборки, где юзер выстраивает свою собственную экосистему. И тут даже один единственный пакет может всё рушить.

Такие системы в продакшоне не применяются. А на задротов, которые сами себе проблемы создают, всем должно быть плевать.

А вот в бинарных дистрибутивах с их тоннами хлама, конечно, даже сотни пакетов ничего не решают.

Честно говоря, не очень понимаю, о каких тоннах хлама ты говоришь. Если не нравятся минималистичные дистрибутивы в духе Alpine, есть Gentoo с её USE флагами.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 2)
Ответ на: комментарий от kirk_johnson

Вы уверены, что новые дистрибутивы вообще запустятся на старом железе?

Сборки зачастую заточены под конкретное железо. В ядро 4.14, кстати, пришла такая новая опция «Enable 5-level page tables support (X86_5LEVEL)». И это не какая-то программная возможность, а поддержка аппаратной возможности некоторых свежих процессоров. И если собрать с этой опцией ядро, то оно запустится исключительно на том процессоре, где этот аппаратный функционал есть. На остальных процессорах ядро будет тут же уходить в reboot. И так по кругу.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Вы уверены, что новые дистрибутивы вообще запустятся на старом железе?

Если архитектура поддерживается, то чо бы и нет-то?

Сборки зачастую заточены под конкретное железо. В ядро 4.14, кстати, пришла такая новая опция «Enable 5-level page tables support (X86_5LEVEL)». И это не какая-то программная возможность, а поддержка аппаратной возможности некоторых свежих процессоров. И если собрать с этой опцией ядро, то оно запустится исключительно на том процессоре, где этот аппаратный функционал есть. На остальных процессорах ядро будет тут же уходить в reboot. И так по кругу.

Ну так не собирай ядро с этой опцией, лол. Поправить пакет с ядром несравнимо проще, чем мейнтейнить свой дистрибутив. К тому же, что-то мне подсказывает, что ни один уважающий себя мейнтейнер не соберет ядро с этой опцией, если она сломает совместимость с железом хотя бы пятилетней давности.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 3)
Ответ на: комментарий от kirk_johnson

Продакшен продакшеном, а есть ещё и много энтузиастов, силами которых развивается свободное ПО. И плевать на них - причинять ущерб развитию свободного ПО.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Продакшен продакшеном, а есть ещё и много энтузиастов, силами которых развивается свободное ПО. И плевать на них - причинять ущерб развитию свободного ПО.

Клоуны, орущие про «лишний пакет для сборки это слишком сложно для нас кудах-кудах», обычно не приносят пользы свободному ПО.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от Deleted

ради одного упоротого столько сил тратить, мдя

Наоборот. Линус сказал, что они не будут удалять код, если у этого кода:

  • Есть пользователи
  • Код не приносит проблем

Если второй пункт не выполняется, код выпиливают без сожалений. В случае с EISA проблем с поддержкой вообще нет, код трогают раз в декаду.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 6)
Ответ на: комментарий от kirk_johnson

Вы так говорите, как будто кроме установки библиотек больше никаких других задач никто не решает.

У юзера и так уже могут быть все нужные ему инструменты, которые он прекрасно юзал годами. А тут юзер качает исходники свежего ядра, начинает собирать, а они ему и говорят: либо доустанавливай libelf, либо выбирай FRAME_POINTER_UNWINDER. И почему это юзер должен мчаться доустанавливать libelf, если он и так прекрасно всё юзал без неё?

saahriktu ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.