Непонятности с выполнением bash-скриптов для iptables
Всем доброго времени суток! :)
Есть две одинаковые системы (Gentoo amd64 no-multilib), назовем их Host №1 и Host №2. Ядро - 2.6.24.7 vanilla, на обоих. Конфиги - идентичны.
При загрузке или при необходимости что-то изменить в правилах запускаются довольно длинные скрипты, вызывающие iptables. В скриптах приблизительно 2000+ команд. Но вот что озадачивает: На Host №1 четырехъядерный процессор, и время выполнения скрипта составляет от 7 до 10 минут. На Host №2 двухъядерный процессор, и время выполнения скрипта занимает меньше минуты. Когда скрипт выполняется на Host №1, нагрузки на процессор практически нет, и во время выполнения скрипта периодически всплывает процесс 'modprobe ip_tables -q'. На Host №2 во время выполнения скрипта процессор нагружен, и modprobe не появляется. Ядро собрано монолитно, модули - только e1000 и e1000e. Естественно, все, что нужно для iptables в ядре есть.
Работают обе системы нормально, ничего не тормозит, компилится все быстро, в общем - тормоза почему-то только на одном хосте именно при выполнении упомянутых выше и процитированных ниже скриптов.
У меня была подобная вещь при установке Gentoo во время сборки system в chroot. Тогда portage тупил перед каждой новой операцией секунд по 20-30. И тоже во время тупления выплывал modprobe. Эту проблему я решил удалением из /dev (в chroot) всех файлов, кроме /dev/zero, /dev/null, /dev/random и /dev/urandom. Но после нормальной загрузки вновь собранной системы все работало нормально, безо всяких плясок с /dev.
Может, кто-то может сказать что-нибудь по этой теме? У меня закончились идеи...
Состояние дерева portage и установленных пакетов на обоих хостах - идентично.
Различие только в hardware (пямять на обоих одинаковая, по 4 гига):
Host №1:
cat /proc/cpuinfo
vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz stepping : 11 cpu MHz : 2399.997 cache size : 4096 KB physical id : 0 siblings : 4 core id : 3 cpu cores : 4 fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm bogomips : 4799.86 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual
lspci:
00:00.0 Host bridge: Intel Corporation 82P965/G965 Memory Controller Hub (rev 02) 00:01.0 PCI bridge: Intel Corporation 82P965/G965 PCI Express Root Port (rev 02) 00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 02) 00:1c.2 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 3 (rev 02) 00:1c.4 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 5 (rev 02) 00:1c.5 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 6 (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev f2) 00:1f.0 ISA bridge: Intel Corporation 82801HB/HR (ICH8/R) LPC Interface Controller (rev 02) 00:1f.2 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA AHCI Controller (rev 02) 00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02) 03:00.0 SATA controller: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller (rev 03) 03:00.1 IDE interface: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller (rev 03) 04:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06) 06:01.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05) 06:02.0 VGA compatible controller: Cirrus Logic GD 5430/40 [Alpine] (rev 47)
Host №2:
cat /proc/cpuinfo:
vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz stepping : 11 cpu MHz : 2669.790 cache size : 4096 KB physical id : 0 siblings : 2 core id : 1 cpu cores : 2 fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr lahf_lm bogomips : 5339.43 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual
lspci:
00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller (rev 02) 00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 02) 00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 02) 00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 92) 00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02) 00:1f.2 IDE interface: Intel Corporation 82801IB (ICH9) 2 port SATA IDE Controller (rev 02) 00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02) 00:1f.5 IDE interface: Intel Corporation 82801I (ICH9 Family) 2 port SATA IDE Controller (rev 02) 01:00.0 IDE interface: Marvell Technology Group Ltd. 88SE6121 SATA II Controller (rev b1) 02:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06) 04:00.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05) 04:01.0 VGA compatible controller: S3 Inc. 86c775/86c785 [Trio 64V2/DX or /GX] (rev 16)
Вот пример скрипта (команд более 2000 на каждом хосте):
iptables -A LACCESS -i vl6 -s 10.81.6.18/32 -j ACCEPT iptables -A ACCESS -i vl6 -s 10.81.6.18/32 -j ACCEPT iptables -A LACCESS -i vl5 -s 10.66.20.10/32 -j ACCEPT iptables -A ACCESS -i vl5 -s 10.66.20.10/32 -j ACCEPT iptables -t mangle -A LSHAPER -o vl6 -d 10.81.6.18/32 -j MARK --set-mark 0x106 iptables -t mangle -A LSHAPER -o vl5 -d 10.66.20.10/32 -j MARK --set-mark 0x111 iptables -t mangle -A SHAPER -o eth0 -s 10.81.7.2/32 -j MARK --set-mark 0x157 iptables -t mangle -A SHAPER -o vl6 -d 10.81.6.18/32 -j MARK --set-mark 0x187 iptables -t mangle -A SHAPER -o eth0 -s 10.66.20.10/32 -j MARK --set-mark 0x15B iptables -t mangle -A SHAPER -o vl5 -d 10.66.20.10/32 -j MARK --set-mark 0x2A3
Спасибо за внимание.
- Для комментирования войдите или зарегистрируйтесь