LINUX.ORG.RU

Вышло ядро Linux 3.8

 ,


3

2

После двух месяцев разработки вышла новая версия ядра Linux 3.8.

Основные новшества представлены ниже.

  • В файловых системах и подсистеме хранения данных.
    • Добавлена поддержка файловой системы F2fs, предназначенной для использования на USB-флешках, картах памяти и других устройствах, использующих уровень FTL. Принцип действия этой ФС основан на постепенном заполнении носителя с начала устройства (Log-structured FS), при этом используется приём Copy-On-Write. ФС гарантирует доступность старых данных, если новые данные записаны не полностью, при этом традиционное (для некоторых систем) журналирование не используется за ненадобностью.
    • В btrfs улучшена функция переноса данных с одного диска на другой. Помимо этого, в код этой ФС приняты патчи, позволяющие некоторым алгоритмам распараллеливаться на несколько процессоров (ядер), что в теории должно привести к увеличению производительности.
    • В файловой системе Ext4 реализована поддержка хранения мелких файлов непосредственно в inode. Этот приём используется для убыстрения доступа к таким файлам, а также в целях экономии дискового пространства. Напомним, что похожие алгоритмы используются и в reiserfs.
    • В файловой системе XFS реализована функция определения повреждений метаданных при выполнении операций чтения и записи. Такие повреждения выявляются посредством вычисления контрольных сумм по алгоритму CRC.
    • В код подсистемы, отвечающей за реализацию RAID6, добавлена поддержка инструкций AVX2, что позволит повысить производительность некоторых операций на будущих процессорах Intel Haswell.
  • В инфраструктуре.
    • Добавлена возможность ограничения памяти ядра, используемой для управления процессами. Это позволяет более эффективно бороться с т.н. форк-бомбами, т.е., бесконтрольным размножением процессов.
    • Подсистема NUMA изменена таким образом, чтобы поддерживать когерентность между памятью и процессором для одного процесса. Это должно привести к повышению быстродействия, т.к. процессы на архитектуре NUMA быстрее получают доступ к памяти, выделенной своему процессору, нежели другим.
    • В отдельных случаях значительно уменьшено потребление памяти. В случае, если процесс запрашивает много памяти, но не пишет в неё, память реально не выделяется. Это достигнуто благодаря применению техники Copy-On-Write для выделения больших страниц памяти на основе страниц, заполненных нулями.
    • Включена утилита turbostat. Она позволяет на новых процессорах Intel смотреть приблизительное потребление (в ваттах) каждого ядра (вычислительного и графического) по отдельности.
    • Добавлена поддержка динамического изменения объёма выделенной памяти при использовании ядра в виртуализированном окружении Hyper-V.
    • Убрана поддержка процессоров серии 386 с целью упрощения кода, отвечающего за поддержку многопроцессорности.
    • В BPF добавлена возможность фильтрации трафика по VLAN'ам. Эту возможность можно использовать, например, в пользовательской утилите tcpdump.
    • Добавлена поддержка вычисления контрольных сумм инкапсулированных пакетов на уровне «железа», что должно снизить нагрузку на центральный процессор.
    • Планировщик процессов изменён таким образом, чтобы помещать много маленьких заданий на одно ядро процессора, позволяя другим ядрам бездействовать. Также отмечается переработка подсистемы RCU, призванная уменьшить джиттер задержки при перепланировании процессов.
  • В драйверах.
    • В драйвер Nouveau добавлена поддержка 3D-ускорения с помощью OpenGL на всех существующих картах GeForce. По части управления охлаждением и поддержки ускорения видео разработчикам ещё предстоит работать.
    • Добавлен простой графический драйвер для NVIDIA Tegra 2/3, разработанный не в компании NVIDIA. К сожалению, наработки последней по части аппаратного ускорения появились позже и в этот выпуск ядра не попали.
    • Улучшена производительность сетевых драйверов, которые используются для паравиртуализации.
    • Значительно расширен спектр поддерживаемых устройств.

Конечно же, в новом ядре есть и множество других изменений, которые, к сожалению, не поддаются перечислению в рамках данной новости. Чтобы получить более детальную информацию о новшествах ядра, рекомендуется обратиться к таким источникам: ноль, раз, два, три. Также полезную информацию можно почерпнуть, читая странички Kernel Newbies (раз, два) и сайт LWN (раз, два).

Скачать тарболл с исходным кодом

Скачать патч на ядро 3.7

>>> Анонс ядра на LKML

★★★★★

Последнее исправление: post-factum (всего исправлений: 2)

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

Когда-то сжатие было даже в ext2

Была такая мода во времена MSDOS. А потом это стало не нужно. И не нужно до сих пор.

anonymous
()

В отдельных случаях значительно уменьшено потребление памяти. В случае, если процесс запрашивает много памяти, но не пишет в неё, память реально не выделяется. Это достигнуто благодаря применению техники Copy-On-Write для выделения больших страниц памяти на основе страниц нулевого размера.


Так вроде всегда и работало, в чем изменения? Всем сомневающимся предлагаю выполнить команду:cat /proc/sys/vm/overcommit_memory Если у вас там 0, то ваш линукс уже выделяет память только по Copy-On-Write. Этот нюанс как правило упускают из вида строители самопальных бездисковых тонких клиентов. У них там тоже нолик сидит, хотя должна быть 2.

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

У меня экономит место на разделе с исходниками где собираю пакеты из АУРА. ~1,5 года уже пользуюсь, нареканий никаких. Но это раздел с данными которые не жалко потерять и на производительность системы в общем не влияет.

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

Совсем не то, uksm - это дедупликация данных в памяти.

Behem0th ★★★★★
()

В файловой системе XFS реализована функция определения повреждений метаданных при выполнении операций чтения и записи. Такие повреждения выявляются посредством вычисления контрольных сумм по алгоритму CRC.

Гмм... Это может значить, что чтение/запись будет чуточку тормознее. :/

iron ★★★★★
()
Ответ на: комментарий от A-234

For kernels which support transparent huge pages, Linux 3.8 can reserve a huge zero page to serve as the basis for new huge pages using COW (copy-on-write) (1, 2, 3, 4, 5 and others). This can significantly reduce memory use in cases where such memory areas are requested but never written to.

post-factum ★★★★★
() автор топика
Ответ на: задам глупый вопрос от dada

Что то голова не варит, сам почитай:

Inline data

An inode is a data structure describing a single file within a filesystem. For most filesystems, there are actually two types of inode: the filesystem-independent in-kernel variety (represented by struct inode), and the filesystem-specific on-disk version. As a general rule, the kernel cannot manipulate a file in any way until it has a copy of the inode, so inodes, naturally, are the focal point for a lot of block I/O.

In the ext4 filesystem, the size of on-disk inodes can be set when a filesystem is created. The default size is 256 bytes, but the on-disk structure (struct ext4_inode) only requires about half of that space. The remaining space after the ext4_inode structure is normally used to hold extended attributes. Thus, for example, SELinux labels can be found there. On systems where extended attributes are not heavily used, the space between on-disk inode structures may simply go to waste.

Meanwhile, space for file data is allocated in units of blocks, separately from the inode. If a file is very small (and, even on current systems, there are a lot of small files), much of the block used to hold that file will be wasted. If the filesystem is using clustering, the amount of lost space will grow even further, to the point that users may start to complain.

Tao Ma's ext4 inline data patches may change that situation. The idea is quite simple: very small files can be stored directly in the space between inodes without the need to allocate a separate data block at all. On filesystems with 256-byte on-disk inodes, the entire remaining space will be given over to the storage of small files. If the filesystem is built with larger on-disk inodes, only half of the leftover space will be used in this way, leaving space for late-arriving extended attributes that would otherwise be forced out of the inode.

Tao says that, with this patch set applied, the space required to store a kernel tree drops by about 1%, and /usr gets about 3% smaller. The savings on filesystems where clustering is enabled should be somewhat larger, but those have not yet been quantified. There are a number of details to be worked out yet - including e2fsck support and the potential cost of forcing extended attributes to be stored outside of the inode - so this feature is unlikely to be ready for inclusion before 3.4 at the earliest.

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

http://altad.ru/dal211-51.html

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

post-factum ★★★★★
() автор топика
Ответ на: комментарий от plm

Да уж, нашел тоже оплот стабильности, XFS... Вообще всю жизнь это была ОЧЕНЬ быстрая файловая система для камикадзе.

Хотя я не спорю с глючностью btrfs, разумеется. Просто смешно, какую ты ей выбрал альтернативу.

anonymous
()

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

Имею NUMA десктоп (HP XW9400), надо обновиться.

Вопрос. uksm патч с NUMA использовать можно?

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

Вообще всю жизнь это была ОЧЕНЬ быстрая файловая система для камикадзе.

4.2 по всем пунктам.

anonymous
()

Вообще главное что в этом ядре появилось a-sync DMA с поддержкой multiring для видео адаптеров radeon (HD3000 и выше, несколько колец есть правда начиная с 4000).

stalkerg ★★★★★
()
Ответ на: комментарий от Jameson
[pf@spock]:[~][0]% zgrep -i numa /proc/config.gz 
CONFIG_NUMA=y
# CONFIG_AMD_NUMA is not set
CONFIG_X86_64_ACPI_NUMA=y
# CONFIG_NUMA_EMU is not set
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
CONFIG_ACPI_NUMA=y
[pf@spock]:[~][0]% zgrep -i uksm /proc/config.gz
CONFIG_UKSM=y
post-factum ★★★★★
() автор топика
Ответ на: комментарий от stalkerg

Там для радеон дров хорошие изменения в этом релизе. Следующий релиз тоже должен веселым получиться в этом плане.

Behem0th ★★★★★
()

отличное обновление

najlus ★★★★★
()
Ответ на: комментарий от post-factum

Это я уже понял, я вот чего понять не могу:

Since 2.5.30 the values are: 0 (default): as before: guess about how much overcommitment is reasonable, 1: never refuse any malloc(), 2: be precise about the overcommit - never commit a virtual address space larger than swap space plus a fraction overcommit_ratio of the physical memory.


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

A-234 ★★★★★
()
Ответ на: комментарий от post-factum

CONFIG_UKSM=y

А как BFS с NUMA поживает? Два камня по 6 ядер прожуёт? Задачи развешивает с учётом NUMA специфики? Есть смысл вообще его пробовать, IMHO CFS на таком количестве ядер лучше? Думаю попробовать pf-kernel, до этого ставить не решался ибо и так в принципе всё устраивало, реально хотел лишь uksm пощупать, виртуалок кучу гоняю параллельно.

Jameson ★★★★★
()

Подождём в Fedora. Надеюсь вакомовские дрова починили.

atrus ★★★★★
()

Убрана поддержка процессоров серии 386 с целью упрощения кода, отвечающего за поддержку многопроцессорности.

Погодите, разве существовали многопроцессорные системы с i386?

CYB3R ★★★★★
()
Ответ на: комментарий от post-factum

Да, уже нагуглил компанию Sequent и Intel iPSC/2. Не думаю, что эти системы сейчас кто-то использует.
Так дропнули поддержку вообще всех i386 или только мультипроцессорных систем с i386?

CYB3R ★★★★★
()
Ответ на: комментарий от post-factum

И у каждого ядра своя память, свой контроллер и своя шина? Сдаётся мне у тебя SMP. Соответственно, как uksm с нумой (а не с галкой в конфиге) работает ты знать не можешь, за неимением нумы.

В любом случае попробую потестить...

Jameson ★★★★★
()
Ответ на: комментарий от post-factum

Ждём форка Linux386.
С одной стороны печаль-беда, ибо линукс-то изначально писался именно под i386 (а сейчас их осталось немало даже у военных), но с другой стороны кому придёт в голову грузить на допотопных машинах что-то старше 2.6?

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

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

post-factum ★★★★★
() автор топика
Ответ на: комментарий от A-234

Так вроде всегда и работало, в чем изменения?

Тут просто ошибка перевода. Zero page - это не «страница нулевого размера» - такого вообще не бывает. Это просто страница, заполненная нулями, с которой и делается CoW. Изменение в том, что эта страница теперь может быть не 4К, а больше. Соответственно, механизм CoW теперь сможет работать с большими страницами.

Всем сомневающимся предлагаю выполнить команду:cat /proc/sys
/vm/overcommit_memory Если у вас там 0, то ваш линукс уже
выделяет память только по Copy-On-Write.

Это здесь совершенно не при чём. Ядро всегда выделяет юзеру память через CoW - так mmap() работает. Единственное, далеко не каждый malloc() доходит до mmap(), по тому, что у glibc есть свой пул, из которого она пытается отдавать память, и только если там уже нету - лезет в mmap()/sbrk(). Но к оверкоммиту это всё ни каким боком.

anonymous
()
Ответ на: комментарий от PaxtonFettel

а получица полюбэ хуже чем уже собраное, даже хуже чес 3.8.0-0.rc7.fc19.

eR ★★★★★
()
Ответ на: комментарий от post-factum

Видимо, NUMA у меня таки не задействована

С включённой NUMA у тебя получается одна нода и один маршрут к памяти, соответственно весь этот кусок логики не используется. У меня масштабы тоже не особо большие, просто конструктивно ноды две. Соответственно шесть ядер в рамках одной ноды это SMP, а две ноды это уже NUMA+SMP. Если честно я думал что CFS обязан подобный винегрет разруливать и перемещать процесс с ноды на ноду вместе с принадлежащей ему памятью, поэтому

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

для меня сюрприз. Был уверен что это уже сделано давно.

Насчёт BFS и UKSM сомневаюсь что кто то это серьёзно тестил на чём то отличном от классического SMP. Ну что же, повод потестить...

Jameson ★★★★★
()

В драйвер Nouveau добавлена поддержка 3D-ускорения с помощью OpenGL на всех существующих картах GeForce

и GeForce 2 MX400 тоже? :)

Harald ★★★★★
()

В драйвер Nouveau добавлена поддержка 3D-ускорения с помощью OpenGL на всех существующих картах GeForce. По части управления охлаждением и поддержки ускорения видео разработчикам ещё предстоит работать.

Посмотрим. Что-то последнее время на GeForce4 440 Go только что-то ломают рандомно.

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

Не знаю, как MX400, но на 440 новью вроде как работает. По крайней мере фреймбуфер =).

post-factum ★★★★★
() автор топика
Ответ на: комментарий от mephistopheles

Вообще писец, надоело уже на шиндоусе сидеть. Очень жду исправления бага. Кстати, твой пометили как дубликат, вот это главный баг https://bugzilla.kernel.org/show_bug.cgi?id=45461 .

Ну на моем 900X3C проблема и в батарейке и в ивенте на закрытие крышки. Просто больше всего бесит именно статус батареи =)

На шиндоус из-за этого я конечно не полезу, но приходится мучиться =(

anonymous
()
Ответ на: комментарий от xterm

это не серьезно врядли на этом запустить можно kde или gnome я про типа xorg имеел виду такую же монструозный систему

xorg вполне запускается через fbdev

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

У меня экономит место на разделе с исходниками где собираю пакеты из АУРА.

А зачем хранить разжатые исходники?

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

Нет, не всегда через mmap, посмотрите что такое MMAP_THRESHOLD в malloc(3). А файл overcommit_memory для того и нужен чтобы перед выделением страниц процессу убедиться что память реально есть когда к ней обратятся. То есть конечно выделится полюбому только при обращении но если памяти нет то программа получит ENOMEM.

A-234 ★★★★★
()

Добавлена поддержка динамического изменения объёма выделенной памяти при использовании ядра в виртуализированном окружении Hyper-V.

Годно. Осталось дождаться, когда редхат затащит эти патчи к себе.

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