The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В ядре Linux оптимизирована реализация алгоритма CRC32C

28.10.2024 14:34

Для включения в состав будущей ветки ядра Linux 6.13 предложен патч с переработанной реализацией алгоритма нахождения контрольной суммы CRC32C. Код реализации CRC32C уменьшен примерно в 10 раз (с 4546 до 418 байт). При выключенной защите retpoline от атак класса Spectre прирост производительности при использовании новой реализации достигает 11.8% на процессорах AMD Zen 2, 6.4% - Intel Emerald Rapids и 4.8% Intel Haswell. При включении retpoline прирост производительности более заметен и достигает 66.8% на системах с процессорами Intel Emerald Rapids, 35.0% - Intel Haswell и 29.5% - AMD Zen 2.



    retpoline enabled  |   512 |   833 |  1024 |  2000 |  3173 |  4096 |
  ---------------------+-------+-------+-------+------ +-------+-------+
  Intel Haswell        | 35.0% | 20.7% | 17.8% |  9.7% | -0.2% |  4.4% |
  Intel Emerald Rapids | 66.8% | 45.2% | 36.3% | 19.3% |  0.0% |  5.4% |
  AMD Zen 2            | 29.5% | 17.2% | 13.5% |  8.6% | -0.5% |  2.8% |

   retpoline disabled: |   512 |   833 |  1024 |  2000 |  3173 |  4096 |
  ---------------------+-------+-------+-------+------ +-------+-------+
  Intel Haswell        |  3.3% |  4.8% |  4.5% |  0.9% | -2.9% |  0.3% |
  Intel Emerald Rapids |  7.5% |  6.4% |  5.2% |  2.3% | -0.0% |  0.6% |
  AMD Zen 2            | 11.8% |  1.4% |  0.2% |  1.3% | -0.9% | -0.2% |

Изначальный вариант CRC32C включал 128 развёрнутых циклов (unroll), что приводило к довольно большому коду. Так как современные процессоры c поддержкой выполнения инструкций не по порядку (out of order) могут выполнять команды параллельно, подобная оптимизация команд перехода в циклах получилась избыточной и приводила лишь к чрезмерно большому коду. Вместо 128 итераций в новом варианте было оставлено только 4, что не только сильно сократило объем кода, но и ускорило выполнение операции.

  1. Главная ссылка к новости (https://www.phoronix.com/news/...)
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62123-linux
Ключевые слова: linux, kernel, optimization, crc32
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (150) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 16:11, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +14 +/
    > Код реализации CRC32C уменьшен примерно в 10 раз (с 4546 до 418 байт).

    Наконец-то правильный академический код добрался до Linux.

     
     
  • 2.2, swarus (ok), 16:15, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +12 +/
    на старых процессорах не могущих в предсказание-предвыполнение старый код быстрее
     
     
  • 3.4, нах. (?), 16:17, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Не исключено что на могущих, но имеющих чуть меньшую глубину очереди - тоже быстрее.

    Но мерять вам интел запретил.

     
     
  • 4.31, Аноним (31), 17:09, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > "Но мерять вам интел запретил."

    Интел выкладывает весь мёд для повышения капитализации перед продажей Квалкому.

     
     
  • 5.101, Аноним (101), 05:39, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    https://3dnews.ru/1101603/
     
     
  • 6.106, Аноним (106), 08:52, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Обратите внимание на дату публикации. Это показатели задолго до публичного скандала с саморазлагающимися процессорами последних поколений.
     
     
  • 7.111, Аноним (101), 12:30, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >процессорами последних поколений

    По факту, проблемы были замечены у k-процессоров 13 и 14-го поколения.
    https://3dnews.ru/1112050/

     
     
  • 8.173, Аноним (-), 21:17, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    При том если это все почитать детально - там просто парад бракоделия Видно что ... текст свёрнут, показать
     
  • 8.179, Аноним (179), 22:15, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да Но публичный скандал разразился после Примерно в июле текущего года До это... текст свёрнут, показать
     
     
  • 9.182, Аноним (182), 02:59, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А теперь подъехали тесты последнего их поколения которое на равные с 11 вот не... текст свёрнут, показать
     
     
  • 10.184, Аноним (182), 03:02, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Зато не гниёт и наверное без дыр ... текст свёрнут, показать
     
  • 9.192, Аноним (-), 21:02, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Интел и их фанаты пытаются трясти какими-то закупленными машинами Которые пока ... большой текст свёрнут, показать
     
  • 6.197, Аноним (-), 06:34, 31/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > https://3dnews.ru/1101603/

    А вот еще интелу подарочки,
    Тик! TSMC решил отменить скидки https://3dnews.ru/1113231/intel-poka-s-trudom-udayotsya-realizovat-ambitsii-vo

    Ток! https://www.phoronix.com/review/google-axion-c4a - а вот гугол видимо не очень понимают зачем им поставщик который их фродит в параметрах и делает процы которые через полгода дохнут. Зато это находит теплое понимание у фирмы ARM.

    А что, Интел, незамениымх на этом глобусе не бывает. Думали, нельзя обойтись без фирмы Интел? Экие наивные господа. Моторола тоже так думала. И где ее процы теперь? Да еще откровенные затыкания рта кастометрам на явно дефективные серии процов, вот, как-то все заметили. Или как быстро и эффективно слить бренд.

     
  • 4.46, Аноним (-), 17:51, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Не исключено что на могущих, но имеющих чуть меньшую глубину очереди -
    > тоже быстрее.

    Вон то должно быть так же или быстрее на почти всем отдаленно напоминающим современный проц, чуть ли не эпохи первопня, уже умевшего спекулятивщину.

     
  • 3.23, Аноним (-), 17:01, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > на старых процессорах не могущих в предсказание-предвыполнение старый код быстрее

    Вот и сидите на старых процессорах со старым ядром.
    Хлам не должен замедлять прогресс, особенно когда речь идет о +66.8% прироста.

     
     
  • 4.90, scriptkiddis (?), 23:33, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Только в твоем воображении.
     
  • 4.137, _ (??), 17:37, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > особенно когда речь идет о +66.8% прироста.

    Да, но - прироста _только_ в расчёте CRC32 сумм. ... А теперь ты берёшь и смотришь _где_оно_ещё_осталось_?!?! ;-)
    И понимаешь что это громогласный анонс об установке на паравоз новейшей карбид-вольфрамовой турбины 8-о Повышает экономичность паровоза серии "овца" аж на "+66.8%"!!!
    Ну что - "запануемо"?!? ;-)

    PS: Тут вон - всё что меньше sha256 списывают ...

     
     
  • 5.144, Аноним (144), 18:21, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А теперь ты берёшь и смотришь _где_оно_ещё_осталось_?!?!

    Во всех современных файловых системах, например.

    > Тут вон - всё что меньше sha256 списывают ...

    Слышал звон, да не знаешь где он. SHA1 спысывают *для задач криптографии*.

     
  • 5.151, Аноним (-), 19:15, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В чертовой куче протоколов, форматов файлов, ФС и проч - как чексумы для обнаруж... большой текст свёрнут, показать
     
     
  • 6.172, _ (??), 21:05, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А то, для чего ты хочешь его пользовать ... так уже миллион лет есть да хоть blacke* ! , раз уж ты любитель прогресса, то будь последователен, как минимум! :)
    Основная фишка CRC32 - что оно реализуется даже на контроллере стиральной машинки :) В линуксе оно быть должно, но пользовать его нынче ... :)
     
     
  • 7.175, Аноним (-), 21:26, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чего есть Если это чукотское название Blake2 и проч, оно производительное тольк... большой текст свёрнут, показать
     
     
  • 8.188, _ (??), 17:01, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А вот в официальной доке BTRFS пишут что на _два_порядка_ медленнее Они конеч... текст свёрнут, показать
     
     
  • 9.193, Аноним (-), 21:09, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    О как, дедуля не только облажался на публику, насоветовав в 30 раз более тормозн... большой текст свёрнут, показать
     
  • 3.36, Аноним (-), 17:19, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > на старых процессорах не могущих в предсказание-предвыполнение старый код быстрее

    Это каких? 486 чтоли? Они пропатчили x86 реализацию, и если x86 такое не умеет - это что? У вас x86 древнее Haswell?

     
     
  • 4.48, Аноним (48), 17:53, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Haswell - это не x86. Это haswell.
     
     
  • 5.57, Аноним (-), 18:10, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Haswell - это не x86. Это haswell.

    Haswell это микроархитектура одного из x86(-64) процессоров.

     
  • 4.92, _kp (ok), 23:51, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, у меня ноут на i5-3210.
    Конечно не основной, но для 3д печати, интернета и ютубов в гараже - и он годен! На последнем Ubuntu, KDE, и не жужжит.

    А производительность, понятие относительное. Вот, Windows планшеты совсем недавно этого старичка по производительности обошли, а Андроид планшеты до сих пор клячи, и ничего, народ радуется флагманам.
    А по сравнению с упомянутым i5, и Haswell конфетка.

     
     
  • 5.94, Аноним (-), 03:08, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ну, у меня ноут на i5-3210.

    Я думаю что OoO механика уже и на нем была - в примерно том же виде. Это знание появилось в середине нулевых, когда до народа стало доходить что порой излишний unroll даже все портит, вымывая кеш жирным кодом лишний раз и ничего нового не давая т.к. команду бранча параллельно обсчитали и оверхеда и так особо не было, оно так только для in-order без спекулятивщины и предсказаний. А в x86 это все уже есть очень давно. Ну вот кроме некоторых атомов разве что.

     
  • 4.96, Аноним (-), 03:19, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это не тоже самое но, для понимания разницы между процессорами и такое есть. Чтобы увеличить в браузере с прокруткой, нажать на картинку в браузере, в верхнем правом углу закрыть картинку X, только тогда появляется увеличенная картинка с прокруткой - так в Лисе. https://ibb.co/GdfvWHF
     
     
  • 5.97, Аноним (-), 04:02, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У современных процессов те что после примерно 2020 разработанных это будет или тысячи МиБ/сек. или десятки тысяч точно не помню.
     
  • 3.40, Аноним (40), 17:31, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > на старых процессорах не могущих в предсказание-предвыполнение старый код быстрее

    В случае x86 это не старый а очень старый.

     
  • 3.67, старый процессор (?), 19:41, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Те кто сидят на старых процессорах за производительностью не гонятся. И за новыми не lts ядрами тоже, пройдет ещё 15 лет прежде чем к ним придет этот патч.

    Нет никакой логики тормозить новое ради ускорения старого.

     
  • 3.112, n00by (ok), 13:06, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > на старых процессорах не могущих в предсказание-предвыполнение старый код быстрее

    То есть процессор неспособен заблаговременно выбрать адрес из таблицы переходов, но исполняться волшебным образом будет быстрее. И это без учёта загрязнения кеша и задержек  из-за чтения ОЗУ.

     
  • 3.129, Аноним (129), 16:15, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чего там на страрых? Cortex-A53 же in-order. И их ещё полно, где используется. И в сетевых девайсах тоже, ага, CRC32.
     
     
  • 4.196, Аноним (196), 23:19, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Чего там на страрых? Cortex-A53 же in-order. И их ещё полно, где
    > используется. И в сетевых девайсах тоже, ага, CRC32.

    На них модуль crc32c-pcl-intel немножечко не загружают/используют. Почему-то. Может быть, потому что интеловый асм Cortex A никогда не умел, например? :))

     
  • 2.103, mos87 (ok), 07:27, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь Linux станет такой же ненужной поделкой, как академические ОС на грантах?
     
     
  • 3.115, Аноним (115), 13:39, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь люди будут переходить на академическую ОС и закапывать это ядро.
     
     
  • 4.130, Аноним (129), 16:17, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В параллельной академической вселенной.
     

     ....большая нить свёрнута, показать (37)

  • 1.3, нах. (?), 16:16, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > на процессорах AMD Zen 2, 6.4% - Intel Emerald Rapids и 4.8%
    > Intel Haswell

    а у кого процессор немодный - идет найух.

    Не зря Линукса в консультанты интела взяли. Вот, работает человек над повышением продаж.

    P.S. я правильно понимаю что они даже не почесались потестировать на каких-то других процессорах?

     
     
  • 2.5, Аноним (5), 16:21, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Этим процам больше 5 лет
     
     
  • 3.15, Игорь (??), 16:51, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Этим процам больше 5 лет

    Ага, особенно Intel Emerald Rapids, которые вышли в декабре 2023г

     
     
  • 4.42, Аноним (-), 17:38, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ага, особенно Intel Emerald Rapids, которые вышли в декабре 2023г

    Но профит есть и на Haswell который весьма немолодая штука уже. И вообще это оптимизация родом из середины нулевых, а то что всякие похонахи не отпустили тормоз с еще тех пор... а вот эти - уже отпустили! :)

     
  • 2.7, Oe (?), 16:33, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А зачем тебе CRC32C на обогревателе со встроенной функцией компьютера?
     
  • 2.9, Someone (??), 16:38, 28/10/2024 Скрыто ботом-модератором     [к модератору]
  • +3 +/
     
  • 2.25, Аноним (-), 17:04, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • –7 +/
    AMD Zen 2 вышли в 2019 году.
    Сейчас их даже бомж в качестве подарка не примет!

    > P.S. я правильно понимаю что они даже не почесались потестировать на каких-то других процессорах?

    Просто никому нет дела до всякого старья.

     
     
  • 3.37, Abra (?), 17:22, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +13 +/
    подари мне, пожалуйста?
     
     
  • 4.41, Аноним (-), 17:37, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > подари мне, пожалуйста?

    С радость, но уже остались только Zen 4 и Zen 5.
    Придется подождать пару лет.

     
  • 4.86, COBA (?), 21:54, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Куда слать?
     
  • 3.116, Аноним (115), 13:41, 29/10/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.118, Аноним (-), 13:47, 29/10/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.119, Ivan_83 (ok), 15:09, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У меня zen2 работают и менять я их не собираюсь, ибо тот же zen2 не сильно лучше, и в целом на АМ4 платформе разница такая что смысла особо нет менять проц если он у тебя уже есть.
     
  • 3.133, Имя (?), 17:29, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что не так с zen2 ? Смотрю на сравнительную табличку, и каких-то шокирующих отличий не наблюдаю. https://en.wikipedia.org/wiki/Zen_(microarchitecture)
     
  • 2.32, Аноним (32), 17:11, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > я правильно понимаю что они даже не почесались потестировать на каких-то других процессорах?

    Как будто другие процессоры кому-то интересны в бизнесе. IBM со своими сам справится, на китайские лонгсуны всем просто плевать (кроме китая, на который всем тоже плевать), а больше ничего особо так и нет. Огороженный Apple silicon? Так на них линукс ставят только энтузиасты, бизнес макось и так устраивает. Так что всё правильно сделали, неча усилия распылять. Кому очень надо — patches are welcome (если это не байКал хехехе).

     
     
  • 3.38, нах. (?), 17:27, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Как будто другие процессоры кому-то интересны в бизнесе.

    я и говорю - кто не успел купить последнего поколения - тот л-х педальный, и должен, собака, страдать!

    > Кому очень надо — patches are welcome

    не, это так не работает. Продажи интел не должны страдать от твоих косоруких патчей!

    Иди вон колор на колор поисправляй для начала.

     
     
  • 4.43, Аноним (-), 17:38, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > я и говорю - кто не успел купить последнего поколения - тот л-х педальный, и должен, собака, страдать!

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

    > Иди вон колор на колор поисправляй для начала.

    Не, сейчас гораздо популярнее проверять цвет пачпорта.
    Вот ссаными тряпками выгнали 11 штук и... ядро ускорилось!

    Надо провести серию экспериментов - выкидывать по 1 или пачкой, со скандалом или по тихому, говорить прямо "вы №№№№" или "ну вы же понимаете ситуацию"...
    В общем простора для исследований просто море.

     
     
  • 5.45, Аноним (-), 17:50, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А что посидеть на старом ядре уже нельзя? Ну типа корона отвалится?
    > На крайняк есть гентушники, они только рады ядро пересобирать.

    Вы издеваетесь чтоли? Вон то дает эффект на почти всех более-менее не ископаемых процах умеющих OoO. Модуль для crc-intel патчили - так что всяким ARM и прочим RISCV где in-order еще бывает местами актуально ради мелкости ядер - это вообше пофиг.

    >> Иди вон колор на колор поисправляй для начала.
    > Не, сейчас гораздо популярнее проверять цвет пачпорта.
    > Вот ссаными тряпками выгнали 11 штук и... ядро ускорилось!

    Торвальдс очень понятно объяснил кой-кому что за ними накопился нехилый техдолг.

     
  • 5.71, нах. (?), 19:59, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А что посидеть на старом ядре уже нельзя?

    ну типа без исправлений багов? Можно, разрешаю.

    > В общем простора для исследований просто море.

    угу, а через недельку расстрелять всех рыжих. И, пожалуй, велосипедистов.

    Вдруг ведро ускорится. Причем на вычислении crc32, который придумали когда компьютеры были большие, и специально для того чтоб его было несложно вычислять на любом калькуляторе.

      

     
  • 2.39, Аноним (40), 17:29, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > а у кого процессор немодный - идет найух.

    Что за проц такой?То что столь жесткий unroll циклов не имеет особого смысла на процах с OoO известно с середины нулевых, наверное. Почему до вон тех дошло только в 2024 - загадка, но хорошо что дошло, минус 3 с фигом кило мусора без каких либо потерь и даже вот с профитом.

    > Не зря Линукса в консультанты интела взяли. Вот, работает человек над повышением продаж.

    Повышением продаж ... чего? OoO с предсказаниями появился еще в первопнях по моему.

    > P.S. я правильно понимаю что они даже не почесались потестировать на каких-то других процессорах?

    На чем надо было crc32-intel тестировать? На первом пне? 486?

     
     
  • 3.78, Аноним (78), 20:39, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > На чем надо было crc32-intel тестировать? На первом пне? 486?

    На первых atom, они как раз без OoO. С другой стороны, они и 15 лет назад в момент своего выхода были непойми для чего созданы, учитывая, что на них тормозило абсолютно всё.

     
     
  • 4.81, Аноним (-), 20:55, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > На первых atom, они как раз без OoO. С другой стороны, они
    > и 15 лет назад в момент своего выхода были непойми для
    > чего созданы, учитывая, что на них тормозило абсолютно всё.

    Это наверное единственные x86 которые могут быть как-то затронуты. И то - ждем когда их владельцы забенчат это. Ну, если им оно надо.

     
  • 3.138, _ (??), 17:49, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Почему до вон тех дошло только в 2024 - загадка

    Загадка?! :) Да ладно! Просто прикинь кому оно нынче надо это CRC32. Ты бы ещё на драйвер для флоппи пожаловался :)

     
     
  • 4.153, Аноним (-), 19:20, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Загадка?! :) Да ладно! Просто прикинь кому оно нынче надо это CRC32.
    > Ты бы ещё на драйвер для флоппи пожаловался :)

    На минуточку дефолтовый чексум в btrfs. Обслуживающем всего-то пару миллиардов хомяков фэйсбука. Для обнаружений кривого хардвара - вполне хватает. А вы можете SHA256 считать пытаясь угнаться за энтерпрайзным SSD конечно. Или заякорить перфоманс всего IO счетом SHA256.

     
     
  • 5.165, _ (??), 19:56, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Согласно вот этому от самих btrfs: https://btrfs.readthedocs.io/en/latest/Checksumming.html

    Digest Cycles/4KiB Ratio Implementation
    CRC32C 470 1.00 CPU instruction, PCL combination
    BLAKE2b 14500 34 builtin, reference impl.


    И если _никто_ не менял, то ... им станет лучше, да :)
    Но это много говорит о людях которые не сделали единственное изменение в конфиге чтобы улучшить производительность НА ДВА ПОРЯДКА! 8-)

     
     
  • 6.176, Аноним (-), 21:37, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    О, какая милота Гражданин раздававший мне ценные советы - наконец то сам изволи... большой текст свёрнут, показать
     
     
  • 7.189, _ (??), 17:06, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Обос**сля? :) Написанное не осилил? :)
    Ну я конечно могу на русский и даже на твой перевести что там написано - но это уже за деньги :)
     
     
  • 8.194, Аноним (-), 21:18, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Дедуля, в отличие от тебя - я в состоянии те исходники еще и читать, и люблю алг... текст свёрнут, показать
     

  • 1.10, Аноним (10), 16:40, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А почему 6.13? У 6.12 уже окно закрыто?
     
     
  • 2.20, Аноним (20), 16:56, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    давно, уже 6.12-rc5
     

  • 1.13, Аноним (48), 16:48, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Код реализации CRC32C уменьшен примерно в 10 раз (с 4546 до 418 байт).

    Там в Линуксе совсем долбанулись? Реализация любого CRC тривиальна и по памяти делается.

     
     
  • 2.19, Аноним (19), 16:54, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Оно еще и на ассемблере написано
     
     
  • 3.28, Аноним (28), 17:07, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И великолепно показывает, что даже на ассемблере можно написать какой-то "страх и ужас")
    Зато как в соседней теме про tinyGO рассказывали "вы бы еще микроконтроллер на питоне писали, бубубу!", "вебассебли замедлит выполнение"..

    А вот как оно вышло, Михалыч)

     
     
  • 4.51, Аноним (-), 17:58, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну так покажите ваши варианты CRC32 на питоне и игогошке которые порвут вон те? :)
     
     
  • 5.139, _ (??), 17:53, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не порвут но там где CRC32 ещё применяется ... окажется что там они _тянут_ ... :)
    У меня студень лет 5 назад на питоне сделал, ну да по сравнению с Си-шной тормозит, но для чего он делел оно _успевало_ :) БратЫ Ынежёнегры почесали что положено чесать, сделали смок лоад тест ... выжило 8-) Ну и забили :)
     
     
  • 6.140, _ (??), 17:54, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    На игогошке - внезапно был быстрее :) Видимо там не ан-ролило. Теперь видимо Си-неый снова быстрее :)
     
  • 6.177, Аноним (-), 21:45, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Не порвут но там где CRC32 ещё применяется ... окажется что там они _тянут_ ... :)

    Тянут что? Питание из питальника? Можете посчитать blake2 для энтерпразйного SSD - посмотрим сколько проца это сожрет. Разложить btrfs на энтерпрайзный SSD - вероятно обычные будни обычного фэйсбука с его 2 млрд юзерей.

    > У меня студень лет 5 назад на питоне сделал,

    Тут такой уровень что даже комментировать неудобно.

     
     
  • 7.190, _ (??), 17:17, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я btrfs не юзаю, у меня нет эксабайт фоточек с котиками, которые все потерять не жалко :)

    У меня в кровавом(С), потеря одной единственной транзакции может стоить компании зарплаты целого отдела за год ... поэтому и орг-выводы делаются моментально и жестко :)
    Поэтому на моих сториджах чексумится всё, и там НЕ CRC32*-family :) Да даже у всех 3 мэйжор облаков - НЕ оно.


    PS: Ещё раз для тугих: CRC32* в ядре _должны_ быть, пока даже _обязанны_. Но их важность нынче сильно меньше, и то, что вопиющую неоптимальность заметили только через 20 лет - прямо об этом и говорит :)

     
     
  • 8.195, Аноним (-), 21:32, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по вашим знаниям в алгоритмах - вашей экспертизе грош цена в базарный день ... большой текст свёрнут, показать
     
  • 4.135, Имя (?), 17:33, 29/10/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.49, Аноним (-), 17:57, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Там в Линуксе совсем долбанулись? Реализация любого CRC тривиальна и по памяти делается.

    И, конечно, ты порвешь по перфомансу хотя-бы вариант из Linux? А то когда какая-нибудь ФС на быстром SSD захочет чексумы блоков им например считать, или что там - скорости много не бывает.

    В Linux был довольно навороченый вариант, с разворотами циклов от 1 до 127, джампом в нужный и .. и оказалось что нет никакого смысла гонять простыню 127 циклов когда разворот на 4 цикла дает тот же или даже более хороший результат. Получилось дохрена кода - без какого либо профита.

     
     
  • 3.54, Аноним (48), 18:05, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >И, конечно, ты порвешь по перфомансу хотя-бы вариант из Linux?

    Нет, конечно. Если нужна супер-производительность для брутфорса, я GPU использую. Если нужна супер-производительность на CPU - то SIMD.

     
     
  • 4.56, Аноним (-), 18:09, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет, конечно. Если нужна супер-производительность для брутфорса, я GPU использую.
    > Если нужна супер-производительность на CPU - то SIMD.

    Ух да, а теперь покажи переключения контекстов с этим всем? А 1000 раз в секунду как тебе? Обычные тики "десктопного" ядра линукс если что. Ты уверен что там оверхед от сохранений контекста не перевесит профит? :)

     
     
  • 5.123, Ivan_83 (ok), 15:45, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А как же tickless?
     
     
  • 6.124, Аноним (124), 15:55, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А как же tickless?

    Как, как... вы там бенчмаркать собрались - ненагруженную систему в вакууме чтоли? Если она не нагружена - то о чем бенч?! Ядро же не считает CRC32 чисто для прикола?! А если нагружена - так ядро нынче heavily threaded, и вообще :)

    Так что размер контекста - некий аргумент. Чем он жирнее, тем хуже задачи переключать получается.

     
     
  • 7.145, Ivan_83 (ok), 18:28, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я вам указываю что вероятно уже нет никаких 1000 переключений контекста в секунду.
    А в ядре этот CRC32 вообще скорее всего для использования в дровах.
     
     
  • 8.155, Аноним (-), 19:26, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А я указываю что ядро Linux уже давно heavily threaded, даже само по себе А так... большой текст свёрнут, показать
     
     
  • 9.162, Аноним (162), 19:48, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Crc32 or crc32c ... текст свёрнут, показать
     
  • 3.141, _ (??), 17:58, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Получилось дохрена кода - без какого либо профита.

    Ну просто на CRC32 всем ... А так то давно на всех площадках озвучивают что нынче основной метод оптимизации жто сделать так чтоб твой код влазил в кэш :)  Просто до ненужно вот только в 24 году руки дошли. Да никто и не заметит :)

     

  • 1.14, Аноним (48), 16:51, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    >x86_64 CPUs can predict loops well, so it

    is fine to just use a loop instead

    То есть на пни болт положили?

     
     
  • 2.98, Аноним (98), 05:19, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Какие, первые? Так давно уже.
    А в 4м это есть из коробки.
     
     
  • 3.125, Аноним (124), 15:56, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Какие, первые? Так давно уже.
    > А в 4м это есть из коробки.

    Да и 4-е лучше в эту коробку - вернуть уже, или как брелок использовать. Жрет много, считает мало, управление питанием никакое. Это отопитель воздуха со встроенной функцией счета был.

     

  • 1.17, Аноним (48), 16:52, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Также удивляет то, что написано на асме, вместо сишки. Что там такого, что Clang на -O3 не сможет выоптимизировать?
     
     
  • 2.52, Аноним (-), 18:02, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Также удивляет то, что написано на асме, вместо сишки. Что там такого,
    > что Clang на -O3 не сможет выоптимизировать?

    Явный unroll - при том в изначальном варианте дико оверинженернутый, с unroll от 1 до 127 и вычисляемым джампом в нужный из. И тут вдруг оказалось что этот джамп + такие простыни не являются каким-то улучшением. И это известно наверное уже около 15-20 лет так то.

    Unroll может как-то помочь на МК и малохольных ядрах типа (low end) in-order апликушников на ARM/RISCV. На всем остальном польза от него весьма варьируется и даже может быть вред.

     
     
  • 3.142, _ (??), 18:15, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Явный unroll - при том в изначальном варианте дико оверинженернутый

    Это для нонешних хм... программерофф он "дико оверинженернутый" :)
    В те ремена это был стандартный метод оптимизации, это любой джун с закрытими глазами делел :) Ну можен не на 128 веток, но и не все ведро писали :)

     
     
  • 4.147, Аноним (-), 18:35, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Это для нонешних хм... программерофф он "дико оверинженернутый" :)

    Ну как старые програмизды написяли мы уже видим)
    Проблема же не в оверинжениринге, а в том что это лабуда еще и тромознутая.

    > В те ремена это был стандартный метод оптимизации, это любой джун с закрытими глазами делел :)

    С таким же "качеством" или получше?

    > Ну можен не на 128 веток, но и не все ведро писали :)

    И слава богу)


     
     
  • 5.159, Аноним (-), 19:33, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну как старые програмизды написяли мы уже видим)
    > Проблема же не в оверинжениринге, а в том что это лабуда еще
    > и тромознутая.

    Такая оптимизация актуальна только для in-order CPU без спекулятивщины, и даже там вымывание кеша такой простыней может внести коррективы. Ибо если мы 100500 циклов ждали оперативу, дальнейшее улучшение счета на 5% мало что меняет. А чем жирнее кот тем менее вероятно что всегда будет только cache hit без ожидания RAM фиг знает сколько (DRAM даже от in-order ядер сильно отстает сейчас).

     
  • 4.158, Аноним (-), 19:28, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это для нонешних хм... программерофф он "дико оверинженернутый" :)

    Вон то уже попахивало obsolete повадками - годике так в 2005 наверное. А тут, вот, нашлась какаха которая жрала почти 4 кило ради того чтобы все ... немного притормозить?! :))

    А нашлась она поди потому что супер-скоростное IO появилось - и у народа стали появляться вопросы - мол, а чего счет примитивных чексум такой % проца то жрет? Ну вот видимо кто-то запустил профайлер и сделал выводы :)

     
     
  • 5.167, _ (??), 20:23, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А нашлась она поди потому что супер-скоростное IO появилось - и у народа стали появляться вопросы - мол, а чего счет примитивных чексум такой % проца то жрет? Ну вот видимо кто-то запустил профайлер и сделал выводы :)

    Вот ППКС прям! :)
    Держи плюса за трасе-дебаг-интерпрет :)

     

  • 1.18, Аноним (48), 16:53, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ещё удивляет неиспользование SIMDа.
     
     
  • 2.24, Аноним (-), 17:02, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вдруг ты будешь запускать ядро на каком-то умном унитазе, где SIMD нету? А?
    У нас же одно ядро для всего, от микроконтроллера до суперкомпьютера.
    Туда пихают дрова, блобы и все, чего не жалко.
     
     
  • 3.29, Аноним (19), 17:08, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ерунду написал
     
  • 3.50, Аноним (48), 17:58, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    CPUID и патчинг никто не отменял. Либа для CRC на сишке, которую я юзал (официальная реализация) умеет в такое. По реализации для каждого набора инструкций, и диспатч через CPUID.
     
     
  • 4.109, Аноним (109), 10:02, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Точно, и пофиг, что ядро вырастет.
     
     
  • 5.117, Аноним (115), 13:45, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Оно и так вырасло на хедеры от амд и этого прироста хватило бы на реализацию под каждое семейство 86-х процессоров на асме явно не один раз.
     
     
  • 6.127, Аноним (124), 15:58, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Оно и так вырасло на хедеры от амд и этого прироста хватило
    > бы на реализацию под каждое семейство 86-х процессоров на асме явно
    > не один раз.

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

     
  • 2.55, Аноним (-), 18:06, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ещё удивляет неиспользование SIMDа.

    А сохранение контекста с дохрена регистров тебя не удивляет?

     
     
  • 3.85, Аноним (85), 21:41, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не с "дохрена", а только с задействованных.
     
     
  • 4.95, Аноним (-), 03:15, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не с "дохрена", а только с задействованных.

    А как ты вообше намерен информировать переключалку задач какие регистры задействованы - без огромного овеорхеда от этого, перевешивающего профит?

    По примерно тем же причинам, насколько я помню, в ядре и плавучка забанена - чтобы немеряный state FPU не сохранять на каждый пшик.

     
     
  • 5.174, Аноним (174), 21:21, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем информировать? Просто отключаем прерывания, сами сохраняем, и сами восстанавливаем, и включаем прерывания обратно. CRC - быстрая операция, подождут.
     
     
  • 6.178, Аноним (-), 21:53, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Затем что переключалка - в non-voluntary preempt приходит сама Берет поток за ш... большой текст свёрнут, показать
     
     
  • 7.180, Аноним (180), 23:53, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Быстрая операция по сравнению с чем? И для какого объема?

    Для сетевого пакета. Кто обрабатывает в ядре гигабайты, используя его механизмы "доверенной загрузки" для энфорсинга DRM - тот сам виноват, и на его нужды вообще можно забить.

    >И точно железо без прерываний столько подождет без нежелательных эффектов типа packet loss и проч?

    А железу то что? Оно знай себе в буфер кладёт, без всякого участия процессора. Разумеется, если кольцевой буффер заполнится, то будет потеря пакетов. Но это неизбежно даже при включённых прерываниях. Отключая прерывания на время вычисления и юзая SIMD мы просто торгуем часть гарантированной латентности на в обмен на негарантированную оную (но в большинстве случаев - такую же), зато с высоким throughput.

     
     
  • 8.183, Аноним (183), 03:02, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А в каких пакетах ядро CRC32 для сетевых пакетов оптом само вот именно CRC32 счи... большой текст свёрнут, показать
     
  • 4.187, Аноним (144), 14:12, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Не с "дохрена", а только с задействованных.

    А "незадействованных" не существует. Если какие-то регистры не используются тобой, то наверняка они используются тем, кто тебя вызвал. Ну и, естественно, тем потоком, на который тебя поменяет планировщик.

     
  • 2.120, Ivan_83 (ok), 15:15, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    crc32 всяких разных куча, а SIMD инструкция есть для 1-2 вариантов.
     
     
  • 3.143, _ (??), 18:18, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ... кому было нужно - те и сделали. Так то вроде любой вариант на SIMD-ы ложится аккуратненько ...
     
     
  • 4.146, Ivan_83 (ok), 18:29, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А смысл?
    Там приросту не так чтобы много получается.
     
     
  • 5.168, _ (??), 20:27, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тут судить не берусь.

    Оно ж как говорят ындейцы - фор вхум хау!(С) ... Ну разве что - "это красиво"(С) :)

     

  • 1.22, Аноним (-), 17:01, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    crc32.c был добавлен в 2.6 19 years ago
    crc32c-pcl-intel-asm_64 12 years ago

    Т.е все эти годы в ядре, жил код, который был замедленный в 10 раз?!
    У миллионов людей по всему миру.
    И ведь кто-то сидел, писал 128 развёрнутых циклов...

    А потом эти "писаки" бухтят, что другой язык на 0.5% медленнее и на 10 минут дольше собирается *FACEPALM*

     
     
  • 2.30, Аноним (30), 17:09, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Айфоны замедляют. Чем linux хуже.
     
     
  • 3.33, Аноним (28), 17:13, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Айфоны замедляют. Чем linux хуже.

    Линуск не хуже, линукс лучше!
    Он был замедлен еще тогда, когда айфонов даже в проекте не было.

     
  • 2.84, Аноним (-), 21:00, 28/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Т.е все эти годы в ядре, жил код, который был замедленный в 10 раз?!

    Не в 10 разумеется.

    > У миллионов людей по всему миру.
    > И ведь кто-то сидел, писал 128 развёрнутых циклов...

    Генератор внезапно. Руками фигачить привилегия тех кто програмить не умеет.

     

  • 1.34, Столлманы (?), 17:14, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    opensource тысячи глаз...
     
     
  • 2.110, Аноним (110), 10:25, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а какие претензии? кто-то обещал что они обязательно найдут? может да, а может нет, но шанс сильно больше чем у закрытого кода, это ж просто вероятность
     

  • 1.69, Аноним (69), 19:51, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Я похоже тупой, но я перехожу по ссылке и вижу патч, но там удалено далеко 4000 строк кода. ("Код реализации CRC32C уменьшен примерно в 10 раз (с 4546 до 418 байт).").

    Я смотрю не туда? Кто-нибудь скиньте ссылку на удаление большого кол-ва кода.

    Или имеется ввиду, что в патче убрали макросы развёртывания и кол-во ассемблерных команд(опкодов) в результирующем бинарнике уменьшилось значительно как указано в статье?

     
     
  • 2.93, Аноним (93), 00:03, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > (с 4546 до 418 байт).").

    даже если по букве на строку, то 4000 строк не наберется, должно было смутить
    А вообще там по ссылке про сгенерированный бинарный код

     
  • 2.114, n00by (ok), 13:14, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    с 4546 до 418 байт - это про машинные инструкции, а не строки кода.
     

  • 1.73, Пыпа (?), 20:05, 28/10/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     ....ответы скрыты (5)

  • 1.87, Аноним (87), 22:48, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Ну и кто там топил за отключение защит от Spectre? Вот этот пример ясно показывает полезность защит. Без защит прирост от оптимизации кода каких-то 12%, а с включёнными - сразу аж 67%! Разница очевидна!
     
  • 1.89, Аноним (89), 23:28, 28/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А разве он изначально не замедлен чтоб по таимингу не хакнули?
     
  • 1.102, Rock (?), 05:42, 29/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    О, наконец-то, обратили внимание, что кэш инструкций даже на самых современных процессорах не безразмерный, измеряется десятками килобайт и его промахи из-за непомерного разворачивания циклов слишком дорого обходятся в многозадачной среде.
     
     
  • 2.105, Аноним (105), 08:46, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Так циклы же и разворачивают чтобы "попасть" в кеш.
     
     
  • 3.107, а (?), 09:13, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    нет, циклы разворачивают, чтобы убрать условные переходы, которые могут останавливать конвеер из-за неправильного предсказания условия.
    а маленький цикл на сотню байт гораздо вероятнее целиком поместится в кеш, чем его развернутая версия на десяток килобайт.
     

  • 1.113, Аноним (-), 13:07, 29/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Спасибо Ubuntu, что я на свой Haswell не могу по человечески установить ванильное ядро как раньше, ибо отвалятся такие приблуды как  linux-modules и  linux-modules-extra, а с ними и сеть.
     
  • 1.121, Ivan_83 (ok), 15:17, 29/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Странно что на асме, хотя это же линукс, который из за обилия всякого странного мог собиратся только gcc.

    Для себя год назад закрыл тему с CRC32 любого вида на любой платформе: https://github.com/rozhuk-im/liblcb/blob/master/include/math/crc32.h

     
     
  • 2.128, Аноним (-), 16:03, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Для себя год назад закрыл тему с CRC32 любого вида на любой
    > платформе: https://github.com/rozhuk-im/liblcb/blob/master/include/math/crc32.h

    А этому гражданину - пожизенную ссылку в XKCD # 927! И кстати как оно по перфомансу относително воооон того? А то какое-нибудь btrfs им как чексумой ФС пользуется и ваше типичное блеяние о том что и где там в очередном гениально коде не важно - решительно не катит в таких случаях.

     
     
  • 3.148, Ivan_83 (ok), 18:36, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Понятия не имею, такой простой код смысла бенчить нет.
    Единственное там можно поизвращатся и подобрать порог перехода от маленьких таблиц к большим или вообще отказатся от маленьких или больших таблиц.

    BTRFS - может смело юзать реализацию на С, но лучше бы им было юзать сразу ту версию CRC32 что есть в некоторых процах.
    В целом CRC32 не является узким местом до достаточно больших значений, и скорее оно упрётся в чтение с диска чем в проц по CRC32, даже для топовых nvme.

     
     
  • 4.156, Аноним (156), 19:26, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Crc32 или crc32c
     
     
  • 5.170, Ivan_83 (ok), 20:31, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Просто CRC32 не существует, их там целый ворох и различаются они по постфиксу, вот crc32c уже весьма конкретное указание на алгоритм/полином.
     
  • 4.163, Аноним (-), 19:51, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    1 Я бы не назвал это простым кодом Довольно оверинженернутая конструкция И по... большой текст свёрнут, показать
     
  • 3.164, _ (??), 19:51, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А то какое-нибудь btrfs им как чексумой ФС пользуется

    Хмм ... ну да, написано у них в доке что дефаулт - CRC32, но можно поменять ... кто и в-правду бтр гоняет, что скажете, меняете на BLAKE2b или нет?

     
     
  • 4.185, Аноним (-), 03:17, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> А то какое-нибудь btrfs им как чексумой ФС пользуется
    > Хмм ... ну да, написано у них в доке что дефаулт -
    > CRC32, но можно поменять ... кто и в-правду бтр гоняет, что
    > скажете, меняете на BLAKE2b или нет?

    Чтобы проц то в 30 раз тормознуть счетом чексум? Всенепременно. Для "обычных" нужд как то заметить гнилой шнурок, проц, планку памяти, девайс, контроллер и проч - CRC32 хватает, в общем то. Единичные битовые ошибки CRC32 вообще гарантировано ловит. Проблемы могут быть только если ожидается откровенная труха оптом, там конечно за энное число попыток - пробьет и пролезет наружу. Если это актуальное соображение, можно и blake2 конечно. Но это достаточно специфичная ситуация.

     
  • 2.161, Аноним (-), 19:37, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Для себя год назад закрыл тему с CRC32

    Очередной самописный велосипед?
    Хотя... это было вполне ожидаемо.

     
     
  • 3.149, Ivan_83 (ok), 18:38, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще то тот код был оптимизирован под тогдашнее железо и отлично работал и работает до сих пор.

    Аргументация у вас как у настоящего растиста: обозвать код плохим без аргументации.

     
  • 2.181, Аноним (-), 23:55, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У тебя какое-то глубоко неверное понимание "растистов", то бишь нас. Я не буду гадать, как тебе удалось впасть в такие заблуждения, но если тебе интересно как, то ты как-нибудь сам разбирайся. Не надо ко мне с глупыми вопросами приставать.
     

  • 1.154, Аноним (156), 19:25, 29/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Crc32 и crc32c это разные причем crc32 аппаратно реализована в процах.

    В прикладном коде часто используется crc32c?

     
     
  • 2.171, Аноним (144), 20:57, 29/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Алгоритм тот же, разные полиномы. Аппаратно в x86 реализован как раз CRC32C.
     

  • 1.186, InuYasha (??), 10:47, 30/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В 2000 году AMD рекомендовала unroll-ить все мелкие и заранее известные циклы. Времена меняются. Эх.. :(
     
     
  • 2.191, _ (??), 17:29, 30/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Четверть века прошло! Что это означает в _самой_ быстроразвивающейся отрасли ... ну понятно :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру