#11
|
|||
|
|||
L2TP termination / mpd5 / CPU usage
Vladimir Yesakov написал(а) к Eugene Grosbein в Mar 15 19:37:47 по местному времени:
Нello Eugene! 03 Mar 15 20:28, I wrote to you: VY> Я заранее прошу прощения, длинновато получилось... Дошли у меня наконец-то руки закончить с этим сервером... VY>>> В идеале хотелось бы получить полные 10G с сервера... ( карточка VY>>> на 2 порта, в один принимаем l2tp, а в другом Internet ) EG>> Это может быть нетривиально, но пробуй. Кому лень читать все, то сразу выводы: 1) Фря 9.3 некорректно работает с двумя процессорами. Вынимание одного никак не влияет на общую производительность системы при данном конкретном виде нагрузки. Возможно, что на этой контретной маме (SuperMicro X9DRT). 10.0 у меня на такой же задаче вешалась при 1k сессий (примерно), а 10.1 я не пробовал. 2) Похоже если взять один процессор, но побыстрее и с большим числом ядер, то до 10GB добратся будет можно. Процессор, правда под 2 килобакса, встанет, но Cisco с 10G интерфейсами (подержанная) все равно тянет на $15k. Теперь детали. VY> PPS взяты с "netstat -i 1" Текущие данные (до пика еще 2 часа...) === Cut === input (Total) output packets errs idrops bytes packets errs bytes colls 859206 0 0 515649102 1085071 7 1214621518 0 947910 0 0 581993230 1216279 4 1321367893 0 953823 0 0 581299125 1222578 6 1387690664 0 925894 0 0 566564259 1184950 7 1354310104 0 877375 0 0 527778823 1109854 7 1271385911 0 924253 0 0 549384743 1166242 7 1287634128 0 939129 0 0 564925817 1196570 6 1330810876 0 953851 0 0 569204225 1212750 3 1351247171 0 949041 0 0 568973122 1212448 9 1367340259 0 === Cut === Похоже Фря не может эффективно использовать 2 CPU Sockets. Я вынул один процессор и включил НT (чтоб прибивку к ядрам не править, вдруг пришлось бы срочно откатывать на 2 CPU). Картина сильно изменилась по PMCSTAT и практически без изменений по TOP -SНIP: === Cut === PMC: [INSTRRETIREDANY] Samples: 148752 (100.0%) , 0 unresolved %SAMP IMAGE FUNCTION CALLERS 5.6 kernel mtx_lock_sleep _mtx_lockflags 4.9 kernel cpusearch_lowest cpu_searchlowest 4.7 kernel mtx_lock_spin wakeup_one:2.5 _sleep:0.9 turnstiletrywait:0.7 4.6 pmcstat _init 4.1 kernel rw_rlock ng_address_hook:1.8 rtalloc1fib:0.8 3.2 kernel rnmatch rtalloc1fib 2.7 kernel rw_runlock ng_address_hook:1.1 arpresolve:0.6 rtalloc1fib:0.5 2.4 kernel inpcblookup_hash_lo in_pcblookuphash 2.1 netgraph.k ngsnd_item ng_applyitem 1.9 libc.so.7 bsearch 1.7 kernel ipoutput ip_forward:0.9 udpsend:0.8 1.7 kernel umazallocarg 1.6 kernel atomicfetchadd_int ng_unref_hook:0.9 ng_unrefnode:0.7 1.4 kernel bzero 1.4 kernel umazfree_arg mfreem 1.3 kernel ixgbexmit ixgbe_mq_startlocked 1.3 kernel ixgberxeof ixgbe_msixque 1.2 kernel spinlock_exit 1.2 kernel mtx_unlockflags ngthread 1.1 kernel criticalexit spinlockexit 1.1 mpd5 _init === Cut === === Cut === CPU 0: 1.6% user, 0.0% nice, 25.5% system, 48.6% interrupt, 24.3% idle CPU 1: 0.0% user, 0.0% nice, 19.6% system, 51.0% interrupt, 29.4% idle CPU 2: 0.4% user, 0.0% nice, 22.0% system, 49.0% interrupt, 28.6% idle CPU 3: 2.4% user, 0.0% nice, 30.2% system, 41.2% interrupt, 26.3% idle CPU 4: 0.8% user, 0.0% nice, 24.3% system, 51.0% interrupt, 23.9% idle CPU 5: 0.8% user, 0.0% nice, 25.9% system, 47.5% interrupt, 25.9% idle CPU 6: 0.0% user, 0.0% nice, 40.0% system, 26.7% interrupt, 33.3% idle CPU 7: 0.8% user, 0.0% nice, 35.3% system, 23.5% interrupt, 40.4% idle CPU 8: 2.0% user, 0.0% nice, 39.6% system, 27.1% interrupt, 31.4% idle CPU 9: 1.2% user, 0.0% nice, 31.8% system, 32.5% interrupt, 34.5% idle CPU 10: 0.8% user, 0.0% nice, 43.1% system, 19.6% interrupt, 36.5% idle CPU 11: 2.4% user, 0.0% nice, 38.4% system, 27.8% interrupt, 31.4% idle Mem: 3550M Active, 360M Inact, 1889M Wired, 1859M Buf, 9987M Free Swap: 2897M Total, 2897M Free PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND 12 root -92 - 0K 1072K WAIT 0 209:14 51.17% intr{irq282: ix0:que } 12 root -92 - 0K 1072K WAIT 2 192:46 50.00% intr{irq284: ix0:que } 12 root -92 - 0K 1072K WAIT 5 192:21 49.17% intr{irq287: ix0:que } 12 root -92 - 0K 1072K CPU4 4 186:24 49.07% intr{irq286: ix0:que } 12 root -92 - 0K 1072K CPU1 1 200:22 47.85% intr{irq283: ix0:que } 12 root -92 - 0K 1072K CPU3 3 185:22 43.90% intr{irq285: ix0:que } 705 root -16 - 0K 192K sleep 4 143:01 35.06% ngqueue{ngqueue4} 705 root -16 - 0K 192K sleep 1 142:32 35.06% ngqueue{ngqueue3} 705 root -16 - 0K 192K sleep 0 143:00 34.77% ngqueue{ngqueue7} 705 root -16 - 0K 192K CPU5 5 142:39 34.77% ngqueue{ngqueue0} 705 root -16 - 0K 192K sleep 1 142:28 34.77% ngqueue{ngqueue6} 705 root -16 - 0K 192K sleep 5 142:13 34.77% ngqueue{ngqueue5} 705 root -16 - 0K 192K CPU2 2 143:01 34.57% ngqueue{ngqueue10} 705 root -16 - 0K 192K CPU6 6 142:47 34.47% ngqueue{ngqueue1} 705 root -16 - 0K 192K sleep 3 142:27 34.47% ngqueue{ngqueue9} 705 root -16 - 0K 192K sleep 10 141:55 34.47% ngqueue{ngqueue8} 705 root -16 - 0K 192K sleep 0 141:55 34.08% ngqueue{ngqueue11} 705 root -16 - 0K 192K CPU4 4 141:57 33.69% ngqueue{ngqueue2} 11 root 155 ki31 0K 192K CPU10 10 654:42 33.59% idle{idle: cpu10} 11 root 155 ki31 0K 192K CPU9 9 640:42 31.40% idle{idle: cpu9} 11 root 155 ki31 0K 192K RUN 7 654:16 31.05% idle{idle: cpu7} 11 root 155 ki31 0K 192K CPU6 6 638:41 30.27% idle{idle: cpu6} 11 root 155 ki31 0K 192K RUN 8 635:37 29.05% idle{idle: cpu8} 12 root -92 - 0K 1072K WAIT 11 124:46 28.86% intr{irq294: ix1:que } 12 root -92 - 0K 1072K WAIT 8 141:02 27.78% intr{irq291: ix1:que } 12 root -92 - 0K 1072K WAIT 6 134:53 27.20% intr{irq289: ix1:que } 11 root 155 ki31 0K 192K RUN 11 637:22 26.95% idle{idle: cpu11} 12 root -92 - 0K 1072K WAIT 9 135:50 25.88% intr{irq292: ix1:que } 11 root 155 ki31 0K 192K RUN 3 612:49 25.10% idle{idle: cpu3} 12 root -92 - 0K 1072K WAIT 7 109:33 24.66% intr{irq290: ix1:que } 11 root 155 ki31 0K 192K CPU1 1 607:12 24.17% idle{idle: cpu1} 11 root 155 ki31 0K 192K RUN 4 608:57 24.07% idle{idle: cpu4} 11 root 155 ki31 0K 192K RUN 5 609:14 23.68% idle{idle: cpu5} 11 root 155 ki31 0K 192K RUN 0 598:29 23.19% idle{idle: cpu0} 11 root 155 ki31 0K 192K RUN 2 606:10 22.07% idle{idle: cpu2} 701 root 43 0 1007M 269M select 4 225:22 20.26% mpd5{mpd5} 12 root -92 - 0K 1072K WAIT 10 92:41 16.36% intr{irq293: ix1:que } === Cut === Как мы видим - "sched_idletd" исчез совсем. Больше никто никого не ждет, похоже... VY> CPU загружен 40% system, 40% interrupt и pmcstat показывает такую VY> вот фигню: PMC>: [INSTRRETIREDANY] Samples: 123604 (100.0%) , 1069 unresolved VY> %SAMP IMAGE FUNCTION CALLERS VY> 11.9 kernel schedidletd forkexit VY> 5.1 kernel rw_rlock rtalloc1fib:1.8 VY> ngaddress_hook:1.7 5.1 kernel _mtx_locksleep VY> mtx_lock_flags 4.3 kernel _mtx_lock_spin wakeupone:1.9 VY> turnstiletrywait:0.9 pmclog_reserve:0.8 sleep:0.6 4.1 kernel VY> selectcheck_badfd kern_select 2.4 kernel _rwrunlock VY> ngaddress_hook:0.9 arpresolve:0.5 2.3 kernel rnmatch VY> rtalloc1fib 2.3 kernel cpu_search_lowest cpu_searchlowest:1.4 VY> schedpickcpu:0.9 2.1 pmcstat init 2.0 kernel VY> inpcblookup_hash_lo in_pcblookuphash Один вопрос пока остается. Как я понимаю дополнительной фрагментации быть не должно. Все виртуальные интерфейсы настроены с MTU 1492, а на другой стороне MTU 1500, без VLAN или какого-либо тунелирования. VY> трафика примерно одинаково, а PPS в три раза отличается И кстати прерываний тоже втрое больше. VY> Я уже подумываю, а не выдернуть ли один CPU и посмотреть что будет? Выдернул. Получил то, что и ожидал... Vladimir --- GoldED+/W32-MSVC 1.1.5-b20130111 |