Управление памятью в сетевой подсистеме и ядре FreeBSD в целом

Jan 31, 2012 23:59

Эта статья будет полезна системным администраторам и программистам, работающим в ядре FreeBSD. Осмыслив изложенное здесь, можно понять, почему же бывает паника по kmem, что такое состояние keglim/zoneli, как читать непонятные циферки в выводе vmstat -m / vmstat -z, и что же такое эти самые mbuf и nmbclusters. Программистам, приступающим к работе не ( Read more... )

объяснение, freebsd

Leave a comment

Comments 20

sir_dog February 1 2012, 20:50:44 UTC
Благодарю!

Reply


nobody_source February 2 2012, 04:48:08 UTC
Хорошо, спасибо, в BSDmag тоже вышла статья про память.

Reply


ext_1023243 February 3 2012, 04:51:01 UTC
Если кому интересны подробности архитектуры, советую почитать книгу "Архитектура операционной системы UNIX" Мориса Дж. Баха. Там подробно изложены все особенности построения юникс-подобных ОС.

Статья отличная. Благодарности автору.

Reply


boorick February 3 2012, 10:32:33 UTC
очень интересно. Спасибо. Сохранил на диск.

Reply


ext_1027625 February 5 2012, 12:27:07 UTC
Из Epilogue к TCP/IP Illustrated Volume 2:
The Berkeley networking code was designed on VAXes when a VAX-11/780 with 4 megabytes of memory was a big system. For that reason some of design features (e.g., mbufs) emphasized memory savings over high performance. This would change if the code were rewritten from scratch today.
Stevens 1993 год.

Интерасно как бы код сетевой подсистемы выглядел если бы был переписан сейчас.

Reply

nuclight February 5 2012, 21:56:34 UTC
Скорее всего, это была бы структура, аналогичная линуксовому sk_buff, но несущая в себе, кроме области данных, заголовки для как бы трех mbuf, одного "кластера" (себя) и m_pkthdr. То есть, имелись бы указатели на две _внешние_ области данных *head и *tail, для большинства пакетов неиспользуемые (весь пакет непрерывен в самой этой структуре), но снимающие ограничения на лимит места в sk_buff (и необходимость его там резервировать), для случаев, например, туннелирования - в этом случае был бы оптимизированный "связный список" из 2-3 областей данных, код манипулирования которым более простой сравнительно с mbuf за счет того, что областей точно не более трех.

Reply


Leave a comment

Up