После двух месяцев разработки Линус Торвальдс представил (https://lkml.org/lkml/2016/7/24/151) релиз ядра Linux 4.7 (https://kernel.org/). Среди наиболее заметных изменений: распараллеливание проверок содержимого директорий, более быстрый и точный механизм управления частотой CPU, поддержка механизма UEFI Capsule для организации обновления прошивок, серия значительных улучшения в средствах трассировки и отладки, поддержка виртуальных контроллеров USB-устройств в стеке USB/IP, возможность ограничения привязки загрузки модулей ядра только из одной ФС, поддержка разработанного для Android механизма sync_file.В новую версию принято около 12 тысяч исправлений от примерно 1500 разработчиков, размер патча - 34 Мб (изменения затронули 9744 файлов, добавлено 493490 строк кода, удалено 194974 строк). Около 47% всех представленных в 4.7 изменений связаны с драйверами устройств, примерно 19% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 15% связано с сетевым стеком, 5% - файловыми системами и 4% c внутренними подсистемами ядра.
Из наиболее интересных новшеств (http://kernelnewbies.org/Linux_4.7) ядра Linux 4.7 можно отметить:
-
Дисковая подсистема, ввод/вывод и файловые системы
- В системе кэширования информации о путях в директориях, предназначенной для ускорения выполнения различных типовых проверок, например, можно проверить наличие файлов в директории без обращения к диску, реализована возможность выполнения нескольких параллельных проверок в одной директории. Так как кэш сам по себе работает достаточно быстро поддержка распараллеливания не оказывает большого влияния на производительности для типовых нагрузок, но может привести к ускорению для сценариев работы, в которых имеет место большое число операций с одной директорией;- Разработанный для платформы Android механизм sync_file (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.... перемещён из экспериментальной секции staging в основное ядро. В отличие от традиционных барьеров на память (fences), напрямую привязываемых ядром к буферам и неподконтрольных из пространства пользователя, sync_file предоставляет API для обработки барьеров в пространстве пользователя, что значительно упрощает создание графических драйверов с компонентами в пространстве пользователя;
- В XFS добавлена возможность настраиваемой обработки ошибок для проблем, связанных с метаданными. Режим обработки ошибок по умолчанию изменён с "повторять попытки вечно" на "повторять поптыки для отмонтирования при сбое";
- В BTRFS для функуции renameat2 (http://man7.org/linux/man-pages/man2/rename.2.html) представлены операции RENAME_EXCHANGE для атомарного обмена путей и RENAME_WHITEOUT для использования в overlayfs. Добавлен новый ioctl для удаления устройства по его идентификатору (devid);
- В CEPH добавлена поддержка использования нескольких файловых систем (нескольких пространств имён в одном кластере);
- В EXT4 добавлена возможность прерывания операции readdir() для больших пустых директорий;
- В NFS добавлена поддержка операции COPY, определённой в спецификации NFS v4.2, которая реализована через появившийся в ядре 4.5 системный вызов copy_file_range и позволят выполнить копирование без перемещения данных по сети с сервера к клиенту и возвращения от клиента на сервер;
-
Сетевая подсистема- В стек USB/IP (http://usbip.sourceforge.net/), позволяющий организовать (https://www.opennet.ru/tips/info/2189.shtml) доступ к удалённым USB-устройствам поверх сети TCP/IP, добавлена поддержка создания виртуальных контроллеров USB-устройств. Новая возможность позволяет не только работать с реальными физическими USB-устройствами, но и пробрасывать виртуальные устройства. Например, можно реализовать эмулято смартфона, который будет выглядеть для рабочей окружения разработчика как обычный смартфон, подключенный по USB;
- В состав принят предложенный компанией Airbus патч, добавляющий в сетевой стек поддержку первой версии протокола HSR (https://en.wikipedia.org/wiki/High-availability_Seamless_Red... (High-availability Seamless Redundancy), предназначенного для создания отказоустойчивых сетей Ethernet;
- Проведена работа по оптимизации TCP-стека для сокращения задержек в процессе обработки большого числа пакетов;
- Добавлена поддержка протокола GTP-U (https://en.wikipedia.org/wiki/GPRS_Tunnelling_Protocol#GTP-U... для туннелирования GPRS;
-
Память и системные сервисы
- В систему динамического управления частотой процессора (cpufreq) добавлен новый механизм регулирования частоты - schedutil (https://lwn.net/Articles/682391/), в котором удалось добиться слаженной работы планировщика задач и средств управления питанием CPU. Schedutil отличается от ранее доступных регуляторов тем, что для принятия решения об изменении частоты он напрямую использует информацию от планировщика задач и может сразу обращаться к драйверам cpufreq для оперативного изменения частоты, мгновенно подгоняя параметры работы CPU к текущей нагрузке. Подобный подход позволяет избавиться от задержек при изменении частоты и сразу реагировать на изменение нагрузки. В ядро пока принята простейшая реализация schedutil, которую планируется расширить в следующих выпусках;
- Поддержка (https://blogs.intel.com/evangelists/2015/06/23/better-firmwa... механизма UEFI Capsule, предоставляющем средства для передачи данных в прошивки EFI. После получения этих данных прошивка разбирает их и принимает решение по из дальнейшему использованию в зависимости от контекста. Наиболее частым применением UEFI Capsule является передача нового образа прошивки для обновления до новой версии при следующей загрузке. Запись данных осуществляется через устройство /dev/efi_capsule_loader;- В ftrace (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.... фреймворк для отслеживания вызова функций, добавлена команда "hist (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.... предоставляющая средства для построения гистограмм событий путём агрегирования информации о наступающих событиях в форме ключ-значение. При помощи новой возможности можно формировать (http://www.brendangregg.com/blog/2016-06-08/linux-hist-trigg... произвольные сводные отчёты, например, узнать раскладку частоты выполнения системных вызовов или интенсивности чтения из файлов в разрезе выполняемых процессов;
- В команду "perf trace" добавлена возможность вывода цепочек исполнения системных вызовов из пространства пользователя. Например, командой "trace --call-graph dwarf --filter-pids {pid}" можно отследить (https://fedorapeople.org/~acme/perf/perf-trace--call-graph-d... обращения к системному вызову recvmsg(), произведённые из процесса gnome-shell;- Добавлен новый тип программ BPF - BPF_PROG_TYPE_TRACEPOINT, которые можно прикреплять к точкам трассировки (tracepoint - вариант динамических printf(), выставляемых разработчиками программ для анализа поведения системы, к которым затем можно обращаться из LTTng, perf, SystemTap, ftrace). Таким образом, теперь можно собирать данные из точек трассировки и обрабатывать из в программе BPF, что является более быстрой альтернативой доступа к точкам трассировки через kprobes;
- В /proc/PID/status добавлено новое поле, позволяющее узнать текущий umask процесса;
- В состав ядра добавлена (https://lwn.net/Articles/668126/) улучшенная реализация системы для определения состояния нехватки памяти в системе (OOM);
-
Виртуализация и безопасность
- Добавлен новый LSM-модуль LoadPin (https://lwn.net/Articles/682302/), который позволяет гарантировать, что все з...URL: https://lkml.org/lkml/2016/7/24/151
Новость: https://www.opennet.ru/opennews/art.shtml?num=44846
А что такое "большая пустая директория"?
Чертовски хороший вопрос
С кучей неиспользуемых записей, я так понимаю
я бы сделал перевод "large" таки как "многочисленных" (подкаталогов?)
Надмозг такой надмозг. Это именно large всмысле "директория с большим списком entry" т.е. записей.Увидеть это на практике можно так:
# на ext4
mkdir "test" && cd "test"
for i in `seq 1 1000000`; do
touch file-$i
done
sync
ls
# ...а теперь ждём пару минут пока оно прочитает содержимое директории
И где в Вашем примере пустота?
> И где в Вашем примере пустота?Он ниже написал - а теперь сотри их.
Я бы на его месте не был гуманистом и влупил бы в примере 10M, посмотреть что задолбается первым: пользователь или его компьютер :)
>> И где в Вашем примере пустота?
> Он ниже написал - а теперь сотри их.
> Я бы на его месте не был гуманистом и влупил бы в
> примере 10M, посмотреть что задолбается первым: пользователь или его компьютер :)Не долго это. А вот то что ext4 при первом обращении в директорию через ->readdir() пытается зачитать ее всю в память - это да.. это зачетно.
> Не долго это. А вот то что ext4 при первом обращении в
> директорию через ->readdir() пытается зачитать ее всю в память - это да.. это зачетно.Это вообще известная проблема больших иерархий. И стирания файлов в них. Скажем rm пробует зачитать все в память. Если файлов было много, память может закончиться раньше. И когда rm -r начинает фэйлить, половина "veteran unix admin" начинает изрыгать кирпичи.
>И стирания файлов в нихАга, месячный набор почти ежедневных снапшотов частичного дебиановского репозитория (с хардлинками, естественно) удалялся несколько часоа.
а теперь усложним эксперимент. Сотрите все файлы что создались. и посмотрите размер директории :)
Но только в данном случае директория совсем не пустая, а с мульёном файлов, хоть и нулевой длины.
Абжди ка, ты хочешь сказать, что ядро которое пилят большие компании не может справится с простым удалением файла? Странновастенько.
> Абжди ка, ты хочешь сказать, что ядро которое пилят большие компании не
> может справится с простым удалением файла? Странновастенько.Большие компании интересует только добавление и изменение файлов. Массово файлы никто не удаляет. Например, стер ты свою фоточку фкантакте, а она ни фига не удаляется, владельцам сервиса намного дешевле ее оставить и потом купить лишний винт, чем бороться с фрагментацией.
Фэйсбучек btrfs использует. Неплохо допилили по итогам, кстати.
> А что такое "большая пустая директория"?Проведите эксперимент: создайте в директории тысяч десять файлов. Удалите их. Посмотрите на размер директории (не содержимого, а самой директории как файла).
А это довольно старый баг / фича ext, который, кстати, бесит.Создадим каталог и начнем писать туда маленькие файлы. Запишем 100 000 тысяч. и удалим.
Потом еще 200 000 и удалим, потом еще 300 000 и удалим. В результате каталог пуст.
Создадим еще один пустой каталог рядом.Вы увидете, например, в mc, как разбубенило размеры первого пустого каталога по отношению к новому, в котором никогда не было файлов.
Так вот,.. лично мне не удалось пронаблюдать, чтобы создание/удаление файла как-то отличалось по скорости, но вот поиск файла, например через find будет происходить с разной скоростью. Открывать такой каталог в mc - редкая экзекуция. cd и затем ls сработают НАМНОГО быстрее, чем mc, думаю не стоит объяснять почему.
Баг на редкость поганый, приведу пример как попасться на эти неочевидные грабли:
1. Какой-то процесс выплевывает кучу файлов в каталог.
2. incron обрабатывает появление файлика и делает свои дела
3. Другой процесс иногда ищет, парсит и удаляет файлы из каталога
4. Потом раз, например, в месяц, мы архивируем файлы по дате и куда-то складываем.Подводный камень в п.3, там с каждым днем всё больше падает производительность.
Единственное решение, если нельзя изменить код пишущего процесса - пересоздание каталога. Понятно, что в этом момент процесс придется перезапустить, потому что новый каталог он не подхватит. И это бесит.Согласен, пример, выглядит искусственно, я специально упростил и переделал, чтобы не рассказывать деталей.
Чушь написали. Каталог раздувается если в нем одномоментно лежит чертова уйма (тысячи и более) файлов. Создавать/удалять можно хоть до усpaчки, можете на /tmp посмотреть для примера. И кстати это не только у ext такая проблема, солярочный ufs тоже от нее страдает.
> Чушь написали. Каталог раздувается если в нем одномоментно лежит чертова уйма (тысячи
> и более) файлов. Создавать/удалять можно хоть до усpaчки, можете на /tmp
> посмотреть для примера. И кстати это не только у ext такая
> проблема, солярочный ufs тоже от нее страдает.Постесняюсь спросить, а XFS & F2FS таким не страдают?
> Постесняюсь спросить, а XFS & F2FS таким не страдают?Кажется, где-то читал, что xfs таким не страдает. Вроде ещё писали, что это сказывается на её производительности при удалении большого числа файлов в одном каталоге.
А там есть другая беда :-) При хардресете часть или даже вся фс может превратиться в тыкву.
> А там есть другая беда :-) При хардресете часть или даже вся
> фс может превратиться в тыкву.С reiserfs и его fsck путаешь.
>> А там есть другая беда :-) При хардресете часть или даже вся
>> фс может превратиться в тыкву.
> С reiserfs и его fsck путаешь.У вас, ламеров, у обоих неверные сведения от таких же ламеров-одноклассников.
регрессия от удаления/создания файлов официально подтверждена.
> Каталог раздувается если в нем одномоментно лежит чертова уйма (тысячи и более) файловИ нормально не сдувается, если их потереть и начать накапливать новую чертову уйму.
Наблюдается рост производительности за счет снижения времени на поиск нужных файлов, если каталог раз в n-ное время пересоздавать, а не просто удалять оттуда файлы.
Согласен, это полная чушь, так не должно быть.
К сожалению, так и не удалось заставить USB/IP стабильно работать. Пришлось смотреть в сторону платных решений.
> К сожалению, так и не удалось заставить USB/IP стабильно работать. Пришлось смотреть
> в сторону платных решений.Главное баги ни в коем случае не писать, а то вдруг тебе еще удастся нахаляву проскочить?!
GPU GM108 Maxwell - о, моя 840M заработает из коробки?
Немного глупый вопрос, но что такое DRM драйвер?
> GPU GM108 Maxwell - о, моя 840M заработает из коробки?
> Немного глупый вопрос, но что такое DRM драйвер?Это нормальный драйвер "как оно должно быть".
> Немного глупый вопрос, но что такое DRM драйвер?Модуль ядра, инициализирующий видяху и обеспечивающий базовые операции, так что и само ядро может немного порисовать (консоли получше чем древние 80x25 например) и более навороченным рисовальщикам (xorg, mesa, ...) становится доступны api DRM и KMS. Часть открытого графического стэка ядра.
>> Немного глупый вопрос, но что такое DRM драйвер?
> Модуль ядра, инициализирующий видяху и обеспечивающий базовые операции, так что и само
> ядро может немного порисовать (консоли получше чем древние 80x25 например) и
> более навороченным рисовальщикам (xorg, mesa, ...) становится доступны api DRM и
> KMS. Часть открытого графического стэка ядра.спасибо, я думал, что это ядерная блобятина
В ядро линукса не берут блобы (кроме фирмварей, работающих на вспомогательных процессорах всякой периферии). Более того, не берут даже код если в юзермоде он используется только блобами. Разработчики линя блобы не любят, крепко и за дело. Фирмвари - техническая необходимость, без них устройства не работают.
> В ядро линукса не берут блобы (кроме фирмварей, работающих на вспомогательных процессорах
> всякой периферии). Более того, не берут даже код если в юзермоде
> он используется только блобами. Разработчики линя блобы не любят, крепко и
> за дело. Фирмвари - техническая необходимость, без них устройства не работают.Правда? а вот Столлман говорит что ядро может жить и без фирмварей. Кому верить то?
Ядро - может. Но некоторые железки желают догрузку кода в RAM т.к. гадкие производители сэкономили на встроенной флешке. Приходится таскать для них такую "загрузку по сети". Можно и не таскать, если работа этих железяк не интересует. Или выбирать железяки не требующие это безобразие. Зависит от целей и задач.
> Ядро - может. Но некоторые железки желают догрузку кода в RAM т.к.
> гадкие производители сэкономили на встроенной флешке. Приходится таскать для них такую
> "загрузку по сети". Можно и не таскать, если работа этих железяк
> не интересует. Или выбирать железяки не требующие это безобразие. Зависит от
> целей и задач.мужик. 2 бакса на флэшке при большой партии это дофига. Давай ты оплатишь производителю из своего кармана ?
Мужик, с учетом размеров фирмварей флешка в большой партии стоить будет менее полудоллара. Но тут бывают и другие причины, например исторические и архитектрные.Вон в usb'шном атеросе - EEPROM как бы есть и сделав его чуть больше (на цену почти не повлияет). Но архитектурно там рулит всем хардварный автомат, как в pci/pcie чипах, читающий еепромину аппаратно. А процик ему сбоку долепили до кучи. И автомат понятия не имеет как xtensa'вскому процу фирмварь отдать. Переделывать уже готовый и рабочий блок никто не будет, поэтому процу довесили ROM с loader'ом желающим довесок по usb. Так было проще всего. Архитектурно-исторически.
пол бакса на партии из 100тыс устройств - это уже 50 тыс баксов. Не то что бы копейки.
...Поэтому дописываем к названию нашей приблуды "PRO" и продаём на 10 баксов дороже. Profit!
Такие вещи в процентах считать надо. Прибыль - её в чём, по-вашему, оценивают? Не в абсолютных же величинах.
> Такие вещи в процентах считать надо. Прибыль - её в чём, по-вашему,
> оценивают? Не в абсолютных же величинах.иногда и в абсолютных. 0.1% от 1 миллиарда - уже много.
> иногда и в абсолютных. 0.1% от 1 миллиарда - уже много.Если ты ворочал миллиардом - причастных к процессу тоже наверное было много. Получат они лишних 50 долларов за полгода вджоба. Это успех.
> Такие вещи в процентах считать надо. Прибыль - её в чём, по-вашему,
> оценивают? Не в абсолютных же величинах.Именно. Если там несколько миллионов летали, плюс-минус 50К - несколько процентов. Хорошо, если получится срубить, но самоцелью не являются.
Перевыпустить чип что-то поменяв - около ляма У.Е. на новые маски (есть способы дешевле, но не для массовых производств). Лишний раз выпускать новую ревизию чипа никто не хочет. По этой же причине никто не хочет лишний раз трогать уже работающий и отлаженный аппаратный блок. Любая оплошность там обойдется дорого.
Это понятно, непонятно, зачем каждый раз с хоста грузить вместо того, чтобы зашить во флеш при изготовлении и обновлять только по необходимости. Речь-то была именно о копеечности флеша соответствубщих объёмов
> Это понятно, непонятно, зачем каждый раз с хоста грузить вместо того, чтобы
> зашить во флеш при изготовлении и обновлять только по необходимости. Речь-то
> была именно о копеечности флеша соответствубщих объёмовНу во первых что-то все-таки стоит. Во вторых - посмотри на примере атероса почему могут грузить по usb даже если eeprom в системе уже был. Не хотят люди трогать большой и сложный блок хардварного автомата и учить его чему-то еще без нужды. У них и так багов в этом автомате сроду выше крыши, атеросовский драйвер на 50% состоит из воркэраундов.
> пол бакса на партии из 100тыс устройств - это уже 50 тыс
> баксов. Не то что бы копейки.Всяческие EEPROM для хранения конфигурации, фабричных калибровок и т.п. один фиг часто есть, немного увеличить - не стоит почти ничего. Но чтобы оттуда фирмвару выгрузить в именно проц, именно так чтобы он на раннем старте оттуда раскрутиться смог - надо все капитально переделывать. Еще можно флеш сразу на том же кристалле что и проц делать. Но катит только для низкоскоростных процов ("микроконтроллер") и технология есть не у всех.
>Фирмвари - техническая необходимость,Их закрытость тоже необходимость?
Это печальная реальность.
> Их закрытость тоже необходимость?Атерос вон отккрыли. Значит не так уж и необходимо. А оно не делает ничего такого коммерчески секретного. Просто "гейт" к атеровсовскому аппаратному автомату по usb. Бесполезно конкурентам.
Законопослушным людям нечего скрывать (как говорят корпорации) и корпорации якобы являются людьми, поэтому законопослушным корпорациям нечего скрывать. Про государства не уточняю, потому что экстремизм.P.S. надеюсь на перевод для всяких реддитов и слэштотов, очень уж годная мысль
Кажется они читали твои мысли: https://habrahabr.ru/post/306034/
Вообще-то закрытость для контор банально дешевле. Открытость - это лишняя морока с организацией доступа плюс юридические риски. Ну и кое-кто подхалтурить любит, продавая одно и то же по разной цене - но это реже.То есть для того, чтобы открывали - нужно как-то выгоду показать. А пока её не особо видно.
Чего только люди не нагородят, лишь бы оправдать больших дядек. Зачем?
Зачем открывать код(куда-то выкладывать и обновлять)? Если устройства продаются, имеют функцию обновления ПО, регулярно происходит обновление. Зачем мне как разработчику или клиенту возиться с этим кодом?
>>> Немного глупый вопрос, но что такое DRM драйвер?
>> KMS. Часть открытого графического стэка ядра.
> спасибо, я думал, что это ядерная блобятинаС трёхбуквенными сокращениями некоторая напряжёнка -- всем не хвататет, "возникают" совпаления.
Это понять нельзя, это знать надо. https://dri.freedesktop.org/wiki/DRM/
С Digital Restrictions Management они "просто" совпали.
Смешно было с Майкрософтами, выпустившими Microsoft RMS.
Ничего не грозит разве что буквосочетанию "IBM". Хотя... http://www.abbreviations.com/IBM
> спасибо, я думал, что это ядерная блобятинаDRM в данном случае означает Direct Rendering Manager.
>>В EXT4 добавлена возможность прерывания операции readdir() для больших пустых директорий;в ссылке https://lkml.org/lkml/2016/7/24/151 нет ни слова про ext4. Подскажите где искать оригинал этого перевода?
https://kernelnewbies.org/Linux_4.7
Что-то давно бенчмарков от фороникса не видел. На сколько новые ядра стали быстрее/медленнее третьей ветки? Есть сравнения?
> Что-то давно бенчмарков от фороникса не видел. На сколько новые ядра стали
> быстрее/медленнее третьей ветки? Есть сравнения?Ну, вот смотри:
16.05.2016 01:49 Linux 4.6 Kernel Officially Released
17.05.2016 17:22 Power & Performance Tests With Fedora 24 Beta, Linux 4.6 Kernel
""For those that have been requesting some fresh benchmarks looking at the system
power consumption / efficiency of modern Linux distributions/kernels [...]18.05.2016 22:00 Radeon Linux 4.6 + Mesa 11.3 vs. NVIDIA Linux Performance & Perf-Per-Watt
01.06.2016 00:47 17-Way NVIDIA Binary vs. AMD Open-Source Linux 4.6 / Mesa Git Driver Tests
01.06.2016 19:56 On Linux 4.6, Some Fresh RadeonSI Mesa 11.2 vs. Mesa Git BenchmarksИ --
24.07.2016 23:23 Linux 4.7 Kernel Officially Released
25-Июл-16 03:02 Константавр @ opennet.ru: "Что-то давно[...]""Ви слишком много кушать!"ТМ
...или "просто" не смогли в сарказм?
Накатил новое ядро 4.7 satable на CentOS 7 из кастомной репы, буду страдать.
Адресок репы можно узнать?
известный elrepo уже не модно?
>ядро 4.7 satableв смысле, satanable?
> В EXT4 добавлена возможность прерывания операции readdir() для больших пустых директорий;Как директория может быть большой и пустой одновременно?
inode это как кот шредингераdf -i
>> В EXT4 добавлена возможность прерывания операции readdir() для больших пустых директорий;
> Как директория может быть большой и пустой одновременно?ext4 имеет плохую особенность, один раз создав место для хранения 10млн файлов в директории, этот размер больше не уменьшается. только удалить и создать заново директорию.
С другой стороны если бы было не так, то с фрагментацией совсем беда бы настала ( это если забыть про производительность )
отнюдь. Просто это не надо было разработчикам ext4 (привет Адилгеру и Томасу), поэтому сделав экстенты для файлов. Никто не задумался о экстентах для директории - и они до сих пор выделают место поблочно.Так же как сделав h-tree для блоков - никто не делал htree в последнем блоке директории.
В результате 500 и выше строковых сравнений - это тоже очень забавно.
fsck -D
> fsck -Dне работает. подумай еще :)
У меня нет лишнего месяца на изучение кода, но на практике эта команда что-то пишет про extentы. Я правильно понимаю, что каталоги просто дефрагментируются без уменьшения размера?
> У меня нет лишнего месяцаПочему? до 1-го сентября даже больше месяца.
Дали мне как-то ненужных жёстких дисков. Нашёл 98-ю винду, игры по вселенной MTG, фильмы в Divx, и сейвы Героев 2 и 3 на уровне сложности "Шахматка короля".Так вот, нашёл я там папку. В а ней такую же папку. А в ней такую же папку... После 20-го раза мне надоело. Замерил. Konqueror начал отсчитывать папки тысячами, а байт занято 0.
Наверное, это какая-то защита от записи, типа "всё место забили, теперь ничего не запишете". Но можно же стереть и записать. Кто-нибудь помнит 90-е и начало 00-х? Зачем это делали? P.S. И да, у друга спрошу при случае.
Особенности FAT, папка просто ссылается сама на себя, то есть рекурсия, а не дикая вложенность. Вручную делается такое элементарно. Регулярно само случалось из-за глюков системы.
> Особенности FAT, папка просто ссылается сама на себя, то есть рекурсия, а
> не дикая вложенность. Вручную делается такое элементарно. Регулярно само случалось из-за
> глюков системы.В этом месте наивные чукотские погромизды узнают как у них выглядит stack overflow, если они делали обход влобовую рекурсией и не парились уровнем вложенности.
О, гуру, поведай же нам какой же уровень вложенности должен быть? Ну так, чтобы и покрыть все возможные случаи нерекурсивных директорий с большой вложенностью и одновременно не вызвать stack overflow. Кстати, а если рекурсию заменить на цикл, то уровнем вложенности можно не париться? Ведь бесконечный цикл и пожирание памяти это фигня по сравнению с stack overflow, правда?
> О, гуру, поведай же нам какой же уровень вложенности должен быть? Ну
> так, чтобы и покрыть все возможные случаи нерекурсивных директорий с большой
> вложенностью и одновременно не вызвать stack overflow.Ответ, очевидно, зависит от доступного объема стэка.
> цикл и пожирание памяти это фигня по сравнению с stack overflow, правда?
Если список куда-то сохранялся - цикл будет не такой уж и бесконечный: в системе за вполне обозримое время закончится память.
rust'овикам-затейникам: как вы думаете, где дублированный эзернет с нулевым временем рекавери может птребоваться компании Эйрбас? Какой ужас, это написано на си :)
Сектантам это все неинтересно.
> rust'овикам-затейникам:Это-то к чему? К селу или к городу?
> Какой ужас, это написано на си :)Вы еще плюсовиков потролльте.
Кстати, вот это вас никак не смущает:
http://git.savannah.gnu.org/cgit/grub.git/tree/grub-core/boo...
?
> Вы еще плюсовиков потролльте.Они обычно инструментами по делу пользуются, без слепого фанатизма и веры в серебряные пули. То-есть когда проект объективно слишком большой для си или хорошо ложится на ООПшные подходы, но скорости и предсказуемости хочется. Даже и не знаю что тут троллить. Разве что реактос, которым ядро на плюсах не очень помогло, в том плане что они 17 лет страдали хней с плачевным результатом и при этом не помогут ни плюс, ни ржавчина, ни что там еще.
Обычно наоборот - если уж надо что-то, куда плюсы совсем не лезут - тогда можно, поплевав на ладони, и за си взяться. А так - плюсы удобнее и по скорости запросто и быстрее могут быть при умении. Например, обработка ошибок в сях влёгкую может быть медленнее плюсовых исключений, если им не обвешиваться по самое немогу. Сложные структуры данных на сях тоже обычно влом людям городить, в отличие от плюсов, что тоже иногда неплохо помогает. копирования данных, опять же, чтобы избежать - меньше усилий надо, и так далее.
> так - плюсы удобнее и по скорости запросто и быстрее могут быть при умении.Они сложные, навороченные, а поэтому делать на них надежно и предсказуемо - пожалуй сложнее. Да и всерьез осваивать это монстрило имеет смысл только если есть задачи такого же калибра.
> Например, обработка ошибок в сях влёгкую может быть
> медленнее плюсовых исключений, если им не обвешиваться по самое немогу.С другой стороны, так можно обработать ошибки более разумно. Не хватило памяти? Подождал и попробовал еще раз. Так IIRC некоторые БД делают, которым не хочется валиться при кратковременных transient. А если ты огреб исключение - ок, тебя вышибло, а дальше? А чтоб вернуться и попробовать еще раз - с исключениями так можно без ужасных костылей?
> Сложные структуры данных на сях тоже обычно влом людям городить, в отличие
> от плюсов, что тоже иногда неплохо помогает. копирования данных, опять же,
> чтобы избежать - меньше усилий надо, и так далее.Спору нет, экскаватор - это круто. Но избыточно для вскапывания грядки. Поэтому мы берем мотокультиватор. А особо упертые ассемблерщики могут и лопатой фигачить.
> Они обычно инструментами по делу пользуются, без слепого фанатизмаУпоминать о том, что новая фича в ядре пингвина запиленна не на расте, конечно ничего общего ни с фанатизмом, ни с болью чуть пониже спины не имеют! Ага.
> и веры в
> серебряные пули. То-есть когда проект объективно слишком большой для сиВера в серебрянную пулю, это скорее к "сишникам" опеннета. Чуть что, так "надо было на Си! Си рулит! Все остальное сoсет!".
При этом скромно игнорируется, что реалии и возможности тех же железок к моменту разработки Си были совсем-совсем другими. Тогда еще экономили даже на "проходах"(чтении) кода (one-pass compilers), не говоря уж о куче других вещей и фич в самом компиляторе.
Или вы считаете, (практически) отсутсвие неймспейсов и слабая типизация там от хорошей жизни?
Как впрочем и куча всевозможных легаси.Но все попытки улучшить устаревший инструмент вызывают бурю негодования и или/насмешек со стороны опеннетных "сишников" (в кавычках, потому что есть подозрения, что большинство самых громко-кричащих знакомо с си лишь поверхностно — недаром не так давно на опеннете кто-то на питоне(!) обломал "кул-сишков").
Почти как в анекдоте:
*******
Досталась как-то суровым сибирским лесорубам японская бензопила и решили они ее испытать.
Завели и подсунули ей деревце.
«Вжик» — сказала японская пила.
«У, б*я...» — сказали лесорубы.
Подсунули ей деревце потолще. «Вж-ж-жик!» — сказала пила.
«Ух, б*я!» — сказали лесорубы.
Подсунули ей толстенный кедр. «ВЖ-Ж-Ж-Ж-Ж-Ж-Ж-ЖИК!!!» — сказала пила.
«Ух ты, б*я!!» — сказали лесорубы.
Подсунули ей железный лом. «КРЯК!» — сказала пила.
«Ага, б*я!!!» — укоризненно сказали суровые сибирские лесорубы! И ушли рубить лес топорами…
*******
Ого, вот это порвало. Ну ты это, покажи софт на своих супернадежных фетишах в применениях где за баг голову реально снимут. Нет, это не гомнобраузер и даже не хипстерский системный сервис.
> Ого, вот это порвало.Почти соболезную. Держите нас в курсе!
> Ну ты это, покажи софт на своих супернадежных
> фетишах в применениях где за баг голову реально снимут. Нет, это
> не гомнобраузер и даже не хипстерский системный сервис.Ну если для вас ЯП является фетишем, то … про почти-соболезнование я уже упоминал.
Кстати, вы не поверите сколько всякого критичного кода, используемого до сих пор, написано не на вашем любимом фетише, а на всяких фортранах и коболях. Лучше и дальше не верьте, а то придется мне еще действительно соболезновать!
>> Тогда еще экономили даже на "проходах"(чтении) кода (one-pass compilers), не говоря уж о куче других вещей и фич в самом компиляторе.А сейчас не экономят и кому от этого лучше?
>>> Тогда еще экономили даже на "проходах"(чтении) кода (one-pass compilers), не говоря уж о куче других вещей и фич в самом компиляторе.
> А сейчас не экономят и кому от этого лучше?Всевозможные варнинги и отлов (насколько это вообще возможно) граблей в тех же Сях и тем более плюсах компиляторами или всякими дополнительными анализаторами вы за плюшки не считаете? А ту же возможность объявлять переменные не только в начале функции, как впрочем и заморочки с "хронологическим" расположением функций.
> - В состав принят предложенный компанией Airbus патч, добавляющий в сетевой
> стек поддержку первой версии протокола HSR (https://en.wikipedia.org/wiki/High-availability_Seamless_Red...
> (High-availability Seamless Redundancy), предназначенного для создания отказоустойчивых
> сетей Ethernet;
> AirbusНеожиданно... А где-то можно посмотреть список контор, которые участвуют в разработке ядра и что именно они пилят?
git log? Файл MAINTAINERS? А так иерархия разработки пилится не по фирмочному принципу а по подсистемам.
> git log? Файл MAINTAINERS? А так иерархия разработки пилится не по фирмочному
> принципу а по подсистемам.Это "кто", но не фирмы. Ты ж не будешь доменное имя из почты брать за сколько-нибудь полный, представительный показатель?
Известный ресурс LWN https://lwn.net/Articles/686697/ собрал список фирм-работодателей (не в курсе, выкладывали ли они его в открытую - думаю, нет) разработчиков ядра и публикует раскладку кто-сколько с каждым https://lwn.net/Kernel/Index/#Releases релизом. Они пиарят(*) Linux Foundatian теми же статистиками в ежегодных~ агитках.
Со второй частью вопроса милого наивного ребёнка (кто пилит _что_), насколько я понимаю, чуть сложнее, и больше, чем собирание отрывочных "фирама XXX выкатиля бооольшой патч для подсистемы YYY, может и будет в след.релизе" или "Интел снова пилит i965" и т.п., ему не "грозит".
(*)
18.02.2015 20:28 Анализ тенденций и участников разработки ядра Linux
16.09.2013 20:48 Анализ тенденций в разработке ядра Linux
04.04.2012 12:07 Анализ тенденций и участников разработки ядра Linux
01.12.2010 21:15 Отчет Linux Foundation с анализом тенденций в разработке Linux-ядра
19.08.2009 18:55 Linux Foundation обобщила данные о тенденциях и участниках разработки ядра Linux01.04.2008 23:00 Анализ участников процесса разработки Linux ядра
""обобщены результаты трехлетнего изучения участия людей и компаний в [...]""
Не LF [ещё]:25.09.2007 15:44 Анализ вклада разработчиков в новое Linux ядро
22.02.2007 13:47 Анализ вклада участников разработки Linux ядра.
""Johnathan Corbet из Linux Weekly News провел исследование [...]""Ну и вне времени и на все времена, так любимое мс-студентами всех форумов Интернета:
21.01.2010 13:03 Статистика Linux ядра: 75% кода пишется корпорациями
""Джонатан Корбет (Jonathan Corbet), основатель LWN, на конференции linux.conf.au рассказал про [...]"
>> git log? Файл MAINTAINERS? А так иерархия разработки пилится не по фирмочному
>> принципу а по подсистемам.
> Это "кто", но не фирмы. Ты ж не будешь доменное имя из
> почты брать за сколько-нибудь полный, представительный показатель?Гм, Корбет [в первом, sample-config/, приближении] именно это и сделал: https://github.com/openstack-infra/gitdm/blob/master/sample-...
> (не в курсе, выкладывали ли они его в открытую - думаю, нет)
И, думаю, этот sample не окончательный/production список. (как и в git://git.lwn.net/gitdm.git)
> Со второй частью вопроса милого наивного ребёнка (кто пилит _что_), насколько я
> понимаю, чуть сложнее, и больше, чем собирание отрывочных "фирама XXX выкатиля
> бооольшой патч для подсистемы YYY, может и будет в след.релизе" или
> "Интел снова пилит i965" и т.п., ему не "грозит".В статистиках https://lwn.net/Articles/679289/ к 4.5 Корбет смотрел, что "пилят" самые активные фирмы: Intel, RH, Google, Linaro.
> 21.01.2010 13:03 Статистика Linux ядра: 75% кода пишется корпорациями
> ""Джонатан Корбет (Jonathan Corbet), основатель LWN, на конференции linux.conf.au рассказал
> про [...]"
https://www.linux.com/publications/linux-kernel-development-...
https://www.opennet.ru/opennews/art.shtml?num=41685
> добавлено 493490 новых строк кодаНикогда оно не станет лаконичным и емким это ядро. Сам Торвальдс говорил, что оно сильно постоянно жиреет, даже чрезмерно.
>> добавлено 493490 новых строк кода
> Никогда оно не станет лаконичным и емким это ядро. Сам Торвальдс говорил,
> что оно сильно постоянно жиреет, даже чрезмерно.А уж как timestamp жиреет - ужос проста! По сравнению с рассветом 1 января 1970 года timestamp разжирел просто до неприличия. ИЧСХ, продолжает жиреть!
Все вопросы к производителям железа. Если они наворачивают сотни сложных и крутых железяк, логично что и драйверов много и они сильно сложнее чем hello world.
> Все вопросы к производителям железа. Если они наворачивают сотни сложных и крутых
> железяк, логично что и драйверов много и они сильно сложнее чем
> hello world.....а можно поменять идеологию ядра на динамику и не грузить в память то, что туда в данный момент грузить не нужно.....м?
man modules
Подгружаемые модули уже как-бы есть. Другое дело, что их исходники лежат в том же git-репозитории, что и ядро, и сборка их интегрирована со сборщиком ядра. И, конечно же, при сборке можно повыкидывать почти все ненужное. Как и скомпилить ядро вместе с частью модулей в один бинарник.
> Подгружаемые модули уже как-бы есть. Другое дело, что их исходники лежат в
> том же git-репозитории, что и ядро, и сборка их интегрирована со
> сборщиком ядра. И, конечно же, при сборке можно повыкидывать почти все
> ненужное. Как и скомпилить ядро вместе с частью модулей в один
> бинарник.А ты место модулей, ставь включить в ядро: не [M], а [Y], или в во всяких xconfig не точку, а галку)
> А ты место модулей, ставь включить в ядро: не [M], а
> [Y], или в во всяких xconfig не точку, а галку)Не менее веселый пример идиотеки есть в советах, где пример как все в модули вынести. Единственным достижением станет распухший рамдиск который дольше распаковывается и пересобирается и возня с прописыванием туда вообще всех мыслимых модулей. С некоторым понижением надежности системы - больше мест где все может обломаться. Если драйвер стоража не удалось вгрузить - дальше все по любому обломается.
> Единственным достижением станет распухший рамдискШёл бы ты, вендузятник, отсюда со своими "рамдисками".
> Шёл бы ты, вендузятник, отсюда со своими "рамдисками".Я рамдисками пользовался задолго до винды. Их уже тогда так называли, в конце 80-х.
> ненужное. Как и скомпилить ядро вместе с частью модулей в один бинарник.Так это как раз удобно. Если я не хочу морочаться с вгрузкой рамдисков, я могу положить драйвер стоража и файлухи в основное ядро. С другой стороны, опциональные вещи типа поддержки какой-нибудь usb-мышки, которая может быть а может и не быть в конкретной системе - зазря память жрать не будет.
> ....а можно поменять идеологию ядра на динамику и не грузить в память
> то, что туда в данный момент грузить не нужно.....м?Капитан, вы что-то припозднились в этот раз. Разработчики линукса давным давно реализовали модули. И даже разработку разнесли по относительно независимым подсистемам, чтоб масштабировалось.
А чего не 5.0?
Потому что 4.19 ещё не вышло.
> Потому что 4.19 ещё не вышло.2.6.39 => 3.0, 3.19 => 4.0. Смекаешь?
4.9 => 5.0, 5.5 => 6. 44 => 207, 248 => 2022Q1, .... 2022Q1 => 0.20220513.01
Система фиг поймешь мягко говоря. А что означает " 44 => 207, 248 => 2022Q1, .... 2022Q1 => 0.20220513.01"?
Выборка маловата, чтобы смекать
> А чего не 5.0?Потому что ты плохо учился в этом году, на пятёрку не вытянул, даже четвёрка для тебя - много.
одна из моделей тачпада (elantech вроде) не определялась на новом ноуте, если не починят, попробую баг-репорт отправить
Пока не починили. Можно самому собрать тем временем, патчи готовы и работают.https://patchwork.kernel.org/project/linux-input/list/?submi...
Спасибо за информацию, проблема еще в том, что ядро просто не видит это устройство. Пробовал разные версии и опции ядра (gentoo-sources) - упорно не замечает.
Ядро ужу перевалило за гигабайт?
Нет, не перевалил. Зайди на kernel.org и посмотри сколько весит ядро.ЗЫ: Что в наше время гигабайт? Даже на 128 гиговом SSD это менее 10 рублей.
> ЗЫ: Что в наше время гигабайт? Даже на 128 гиговом SSD это
> менее 10 рублей.Согласен, как же нам действительно повезло, что кроме ядрах хранить на диске ничего не нужно.
> Ядро ужу перевалило за гигабайт?у меня как было 12 метров, так и осталось))))
ты его исходники хоть раз видел?
заминусовали, видимо, те, кто не видел XD
Обновил ядро в Ubuntu 14.04.4 до 4.7
Теперь система не хочет загружаться:Код: [Выделить]
/scripts/imt-top/udev" can't create file /sys/kernel/uevent_helper: permissions failed"
Что это за ошибка и как с ней бороться?
> Обновил ядро в Ubuntu 14.04.4 до 4.7
> /scripts/imt-top/udev" can't create file /sys/kernel/uevent_helper: permissions failed"
> Что это за ошибка и как с ней бороться?У тебя https://bugs.debian.org/752742 systemd портух.
> У тебя https://bugs.debian.org/752742 systemd портух.По любому, это системд и сишные портянки виноваты.
The udev initramfs script is executed with set -e
[/cde]
> Обновил ядро в Ubuntu 14.04.4 до 4.7
> Теперь система не хочет загружаться:
> Код: [Выделить]
> /scripts/imt-top/udev" can't create file /sys/kernel/uevent_helper: permissions failed"
> Что это за ошибка и как с ней бороться?Ды вы клоун, батенька - какие репы?? - курите как собрать ванильное под систему...
> Ды вы клоун, батенька - какие репы?? - курите как собрать ванильное под систему...Ашиппка в скрипте udev, при чем тут ядро? Там скрипт так написан что ломается при любом отклонении от идеала. И вклинивает загрузку...
> Что это за ошибка и как с ней бороться?Да кто ж знает как с вами, ламерами, бороться?
> После двух месяцев разработки Линус Торвальдс представил релизДесять лет назад за такое могли бы уб... высмеять.
Но ты еще тогда в детский сад ходил, мог не застать
> В NFS добавлена поддержка операции COPYНаконец-то. 2016 год. Странно, что так долго возились, ведь явная нужная функциональность. В виндовых шарах это было, кажись, с 98 винды. Не приходилось пересылать данные по сети при выполнении копирования в рамках одной удаленной машины
NFS он какбе кроссплатформенный, в него изменения просто так не протолкнешь.
Если думать не задницей, то _таких_ изменений вообще не должно было быть. Функциональность копирования целиком на сервере без передачи по сети, по-моему, это первое что приходит в голову при обдумывании первой версии спецификации на такие вещи, как NFS. Тем более, в те лохматые года не до оптики было людям.
кто может подсказать, поставил от сюда:
http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.7
и вместо 8, кажет 3.2 гига, PAE не добавили?
> кто может подсказать, поставил от сюда:
> http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.7
> и вместо 8, кажет 3.2 гига, PAE не добавили?Твоё предположение - правильное. Отошли им багрепорт.
> кто может подсказать, поставил от сюда:
> http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.7
> и вместо 8, кажет 3.2 гига, PAE не добавили?Торвальдс про PAE: https://cl4ssic4l.wordpress.com/2011/05/24/linus-torvalds-ab.../
Вкратце - гадость и ненужно.
> Торвальдс про PAE: https://cl4ssic4l.wordpress.com/2011/05/24/linus-torvalds-ab.../Очень смешно, парень с 16ГБ на борту будет рассказывать, как жить людям с 1ГБ. Он сам-то пытался запускать 64битный линукс на 1ГБ? С графикой?
А зачем тебе PAE на 1Гб оперативки? Там никакое PAE не требуется. И так, на правах рекламы открой для себя zram. Сжатая оперативка - лучше чем своп на диске :)
Правильно написанный код на x64 потребляет столько же памяти, сколько и x86. Чтобы приложение начало ощутимо больше потреблять память, оно должно работать с большим количеством указателей.
Без большого количества указателей можно написать только хелловорлд.
> Без большого количества указателей можно написать только хелловорлд.Это потому, что ты двоечник.
про PAE - Линус в целом метко написал.
https://cl4ssic4l.wordpress.com/2011/05/24/linus-torvalds-ab.../
> кто может подсказать, поставил от сюда:
> http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.7
> и вместо 8, кажет 3.2 гига, PAE не добавили?Поставил вот отсюда (не Ubuntu! без SMS.) https://packages.debian.org/wheezy-backports/i386/linux-imag... и не понимаю, про какой-такой Вы PAE?!
. https://www.opennet.ru/openforum/vsluhforumID3/108449.html#40
. https://www.opennet.ru/openforum/vsluhforumID3/105731.html#103
HASP USB ключи теперь можно штатными средствами по сети прокидывать? или в ядре функциональность есть, а в юзерспейсе утилит нет?
кто-нить заморачивался?
> HASP USB ключи теперь можно штатными средствами по сети прокидывать? или в
> ядре функциональность есть, а в юзерспейсе утилит нет?
> кто-нить заморачивался?Какие тебе утилиты нужны? Запускаешь клиента и сервера, они конектятся по сети, а дальше ты уже на машине куда прокинул устройство и запускай софт который будет работать с виртуальным устройством.
>> HASP USB ключи теперь можно штатными средствами по сети прокидывать? или в
>> ядре функциональность есть, а в юзерспейсе утилит нет?
>> кто-нить заморачивался?
> Какие тебе утилиты нужны? Запускаешь клиента и сервера, они конектятся по сети,
> а дальше ты уже на машине куда прокинул устройство и запускай
> софт который будет работать с виртуальным устройством.можно просто сказать, что все утилиты уже в поставке дистрибутива есть.
что они так с syn то носятся и никак не хотят допиливать TCPCT, вместо этих примочек ?
аналогично rfc4821 все никак не запилят(а без PMTU discovery оно "грустно" в телекоме обычно).