Коллеги,Подскажите, плз, что-то сам не соображу.
Итак, есть некий перл-скрипт, запускающийся из шелл-врапера, задача которого анализировать принадлежность трафика заданным подсетям и генерировать .sql файлы, для последующего импорта в БД. Скрипт крутится на линукс-боксе P4 3GHz (HT включен) и гиг оперативки, ядро 2.6.22-smp.
Когда скрипт не работает, загрузки нет совсем:
top - 14:55:23 up 24 days, 16:07, 2 users, load average: 0.29, 0.77, 0.85
Tasks: 68 total, 1 running, 67 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 906184k total, 875832k used, 30352k free, 98976k buffers
Swap: 1048568k total, 52k used, 1048516k free, 616412k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 15 0 2036 656 564 S 0 0.1 0:00.83 init
Когда работает один инстанс скрипта, загрузка системы выглядит след. образом:
top - 14:54:05 up 24 days, 16:05, 2 users, load average: 1.01, 1.00, 0.92
Tasks: 71 total, 2 running, 69 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.6%us, 0.0%sy, 0.0%ni, 98.1%id, 0.0%wa, 0.6%hi, 0.6%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy,100.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 906184k total, 880312k used, 25872k free, 98940k buffers
Swap: 1048568k total, 52k used, 1048516k free, 617392k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9763 root 26 1 11244 6148 2756 R 100 0.7 0:08.64 summary_ipcad.p
1 root 15 0 2036 656 564 S 0 0.1 0:00.83 init
Как видно, система (проц) загружен на 50%. Причем загружено только одно ядро.
Логично предположить, что запустив второй инстанс скрипта, система загрузиться полностью и станет работать более эффективно (соседнее ядро проца не будет простаивать). Почти так и происходит:
top - 14:58:39 up 24 days, 16:10, 2 users, load average: 0.94, 0.69, 0.78
Tasks: 73 total, 4 running, 69 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.6%us, 0.6%sy, 98.2%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.6%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy,100.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 906184k total, 884116k used, 22068k free, 97360k buffers
Swap: 1048568k total, 52k used, 1048516k free, 623988k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10054 root 26 1 10980 5932 2756 R 100 0.7 0:07.69 summary_ipcad.p
10081 root 26 1 14288 6324 2816 R 100 0.7 0:06.29 summary_ipcad.p
Но эффективность мало того, что не вырастает, она уменьшается в несколько раз! Вместо 60 секунд, которые в среднем работал один инстанс, обрабатывая один файл, два инстанса работают дольше 300 секунд!
Объясните, плз, в чем ошибка в моей логике? Или может где-то что-то надо подкрутить?
Заранее спасибо!