Процесс ядра Linux:

Процесс ядра Linux:

CPUЯ хотел бы знать , сколько потребляют memoryмои текущие iptablesправила.

Я пробовал искать в psи htop, но даже с отображением потоков ядра не увидел ничего, связанного с iptables.

Я использую conntrackмодуль с этими настройками, специфичными для модуля: xt_recent.ip_pkt_list_tot=1 xt_recent.ip_list_tot=4096. Я думаю, 4096что это довольно высоко. И затем, в моей конфигурации iptables, я использую два вида списков блокировки: BLACKLISTи PORTSCAN.

-A INPUT  -i eth0 -p icmp             -j ACCEPT
-A INPUT  -i eth0 -s  1.2.3.4/32      -j ACCEPT
-A INPUT  -i eth0 -m  recent --rsource --name BLACKLIST --seconds 14400 --update -j DROP
-A INPUT  -i eth0 -p  tcp  -m tcp --dport 25 -j ACCEPT

-A INPUT  -i eth0 -m  recent   --rsource --name PORTSCAN --seconds 3600 --update -j DROP
-A INPUT -i eth0  -p  udp  -m udp --dport 5060 -j ACCEPT
-A INPUT -i eth0  -p  tcp  -m tcp --dport 5061 -j ACCEPT
-A INPUT -i eth0  -p  udp  -m udp --dport 5062:5100 -j ACCEPT

-A INPUT  -i eth0 -m  conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT  -i eth0 -m  recent  --rsource --name PORTSCAN --set -j DROP

-A INPUT  -i eth0 -j DROP
-A INPUT  -j DROP

У меня возникли проблемы с сетью на сервере, в которых, как я подозреваю, iptablesмогут играть роль мои правила. Например:

  • Мои sshсеансы довольно часто прерываются.
  • Ping сообщает о потере 0,2% пакетов
  • когда я подключаюсь к разрешенным портам, т.е. 5060это занимает заметно больше времени, когда PORTSCANесть много элементов, по сравнению с тем, когда он пуст

  • Каков наилучший способ решения этой проблемы?

  • Могу ли я как-то оптимизировать правила iptables?
  • Как узнать, какая часть ресурсов моего ЦП потребляется iptables?

решение1

Процесс ядра Linux:

Многие функции ядра, такие как Iptables, обрабатываются на уровне ядра как задачи kworker, они видны в диспетчерах задач, таких как top. Как упоминалось в комментариях, вы можете вычислить использование ЦП и памяти, сравнив общее использование ресурсов с загрузкой правил и без нее iptables. Обратите внимание, что это ipsetуже потребляет память, даже если вы не используете ее в правиле.

Кворкерэто процесс-заполнитель для рабочих потоков ядра, которые выполняют большую часть фактической обработки для ядра, особенно в случаях, когда есть прерывания, таймеры, ввод-вывод и т. д. Они обычно соответствуют подавляющему большинству любого выделенного "системного" времени для запущенных процессов. Это не то, что можно безопасно удалить из системы каким-либо образом, и оно совершенно не связано с приложениями рабочего стола (за исключением случаев, когда эти программы выполняют системные вызовы, которые могут потребовать от ядра что-то сделать). Также kworkerозначает процесс ядра Linux, выполняющий "работу" (обработку системных вызовов). Вы можете иметь несколько из них в своем списке процессов: kworker/0:1один на первом ядре ЦП, kworker/1:1один на втором и т. д. Все процессы ядра запускаются как дочерниеkthreaddпроцесс в пространстве ядра.

Родительский процесс:Идентификатор процесса kthreaddравен 2, и этот список рабочих процессов ядра можно получить с помощью:

pstree 2 -l -p 
# or
ps --ppid 2 -u 
# or
ps --ppid 2 -o pid,user,%mem,command,time,etime,cpu,pcpu,nice,pcpu,vsz 

Последний вариант можно использовать со скриптом bash + cron для отслеживания изменений... в качестве альтернативы для прямого временного анализа perfможно использовать ( apt-get install linux-tools-common linux-tools-3.11.0-15-generic)

# Record 10 seconds of backtraces on all your CPUs:
sudo perf record -g -a sleep 10

# Analyse your recording:
sudo perf report

Перемещайтесь по графику вызовов с помощью,,,и Enter.


Ссылки:1,2,3,4,5,6.

Связанный контент