Ядро Linux, размер iptables и vmalloc - PullRequest
4 голосов
/ 11 ноября 2011

У нас были проблемы с iptables на некоторых наших Linux-блоках, где кажется, что загружаемое число сдвиговых правил приводит к ошибке vmalloc (распределение vmap для размера 3506176 не удалось: используйте vmalloc = для увеличения размера.), Чтобы появиться вdmesg и все дополнительные правила перестают загружаться.

После долгих исследований мы увеличили размер vmalloc со 128 МБ до 512 МБ и перезагрузили, что временно исправило проблему.Кажется, однако, что 64-битное ядро ​​не имеет этой проблемы (?).Я проверил свой ящик CentOS 6 (64-битный), и он имеет VmallocTotal: 34 359 738 367 кБ (!).

Итак, мой вопрос, решит ли это проблему и 32-битное ядро ​​PAE?Было бы гораздо проще менять ядра, чем ОС на нескольких сайтах ...

Спасибо, Джейк

Ответы [ 2 ]

6 голосов
/ 11 ноября 2011

32-битное ядро ​​PAE не решит эту проблему, потому что проблема связана с фрагментацией выделения в пространстве vmalloc. В x86-64 пространство vmalloc очень велико (намного больше, чем физический размер ОЗУ), поэтому вы не попадаете в ситуацию, когда оно достаточно фрагментировано для возникновения ошибок выделения. Однако в 32-разрядном пространстве пространство vmalloc намного-намного меньше - до сотни МБ. Переход на PAE не увеличивает это виртуальное пространство выделения.

Обходной путь для вашей проблемы, если вы хотите остаться в 32-битном режиме, - это изменить ядро ​​так, чтобы iptables выделял из заранее выделенного пространства vmalloc, таким образом, избегая фрагментации, вызванной другими вызывающими для vmalloc (хотя , нет никакой гарантии, что это решит вашу проблему идеально, так как это зависит от профиля того, как iptables выделяет память относительно того, что вы делаете с ним, что неизвестно в рамках этого вопроса).

2 голосов
/ 16 ноября 2011

Вы можете использовать 64-битное ядро ​​с 32-битным пользовательским пространством - это даст вам преимущества огромной арены vmalloc только с изменением ядра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...