Перейти к содержимому
Калькуляторы

linux - скорость создания интерфейсов чем больше, тем медленнее создаётся

Я правильно понимаю, что вы подобие "ip unnumbered" + QinQ на брасах делаете?

Если не секрет - сколько одна коробка вланов терминирует + сколько трафика обслуживает? =)

У меня почти 300 VLANов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тема актуальна. Скажите кто как решает? особенно интересует решение на RH-совместимых дистрибутивах.

 

http://elrepo.org/linux/kernel/el6/x86_64/RPMS/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я правильно понимаю, что вы подобие "ip unnumbered" + QinQ на брасах делаете?

Если не секрет - сколько одна коробка вланов терминирует + сколько трафика обслуживает? =)

 

Занимались терминацией VLAN на тазиках два года назад. Было по 10 сетевых интерфейсов на сервере (интерфейс на кластер). От 100 до 3k Vlan на сетевушке. Работало изумительно.

 

Было два минуса:

1. Скорость поднятия сетевых интерфейсов после ребута системы. В данный момент как я понимаю проблема уже решена.

2. Странный баг ядра, при удалении VLAN-а kernel panic, приходилось просто сносить все сети в VLAN-е не удаляя самомго VLAN-а.

 

 

До 35K пользователей на трех серверах выросли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

До 150-200 VLAN вообще без проблем поднимается на kernel-3.2.х при перезапуске. Даже не засекал сколько подъем занимает, но старт всех vlan почти мгновенный.

 

Кстати и намного стабильнее машины стали себя вести с 3.2.х, по сравнению с 2.6.32.х

 

Аптаймы почти по году уже на трех серверах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за информацию для размышлений =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подниму старую тему

 

В "новых" ядрах(например, 3.12-rc7) интерфейсы создаются относительно быстро, но удаляются медленно

 

Скрипт создания 1000 интерфейсов

#!/bin/bash

for((i=1;i<1000;i++))
do
   for((j=2;j<3;j++))
   do
#ip link add link eth1.$j name eth1.$j.$i type vlan id $i
vconfig add eth1.$j $i 1>/dev/null 2>/dev/null
#ip link set eth1.$j.$i up
ifconfig eth1.$j.$i 0.0.0.0 up 1>/dev/null 2>/dev/null

   done
done

Скрипт удаления 1000 интерфейсов

#!/bin/bash

for((i=1;i<1000;i++))
do
#    echo $i
   for((j=2;j<3;j++))
   do
#ip link del eth1.$j.$i
vconfig rem eth1.$j.$i 1>/dev/null 2>/dev/null
   done
done

(кстати, vconfig работает быстрее ip)

 

# time /root/int-create.sh

 

real 0m2.752s

user 0m0.184s

sys 0m0.360s

 

# time /root/int-rem.sh

 

real 0m32.882s

user 0m0.208s

sys 0m0.100s

 

Выхлоп oprofile:

CPU: Intel Core/i7, speed 2666.78 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (No unit mask) count 100000
samples  %        image name               app name                 symbol name
12383    27.5883  vmlinux                  vmlinux                  intel_idle
3345      7.4524  vmlinux                  vconfig                  __default_send_IPI_dest_field.constprop.0
3119      6.9489  vmlinux                  vmlinux                  cpuidle_enter_state
1688      3.7607  vmlinux                  vmlinux                  __default_send_IPI_dest_field.constprop.0
779       1.7355  vmlinux                  vmlinux                  update_sd_lb_stats
750       1.6709  vmlinux                  vconfig                  csd_lock_wait.isra.1
732       1.6308  vmlinux                  vmlinux                  do_raw_spin_lock
680       1.5150  bash                     bash                     /bin/bash
597       1.3301  vmlinux                  vmlinux                  __switch_to
583       1.2989  vmlinux                  bash                     flush_tlb_page
444       0.9892  vmlinux                  vconfig                  page_fault
413       0.9201  vmlinux                  vmlinux                  tick_broadcast_oneshot_control
342       0.7619  vmlinux                  vmlinux                  clockevents_notify
340       0.7575  vmlinux                  vmlinux                  rcu_try_advance_all_cbs
309       0.6884  vmlinux                  vmlinux                  apic_send_IPI_self
306       0.6817  vmlinux                  vmlinux                  menu_select
266       0.5926  vmlinux                  vmlinux                  rcu_process_callbacks
258       0.5748  vmlinux                  vmlinux                  native_apic_mem_read
250       0.5570  vmlinux                  vmlinux                  __schedule
222       0.4946  vmlinux                  vmlinux                  int_sqrt
219       0.4879  vmlinux                  vmlinux                  cpuidle_idle_call
208       0.4634  vmlinux                  vconfig                  snmp_fold_field
207       0.4612  vmlinux                  vmlinux                  irq_work_interrupt
194       0.4322  vmlinux                  vmlinux                  reschedule_interrupt
178       0.3966  vmlinux                  vmlinux                  find_next_bit
...

 

Есть у кого-нибудь идеи куда копать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скрипт создания 1000vlan

#!/bin/sh

vconfig add eth0 333
ip link set eth0.333 up

i=0
while [ $i -le 1000 ]
do
 iname=$[1001+$i]
 vconfig add eth0.333 $iname 1>/dev/null 2>/dev/null
 ifconfig eth0.333.$iname 0.0.0.0 up 1>/dev/null 2>/dev/null

 i=$[$i+1]
done;

Скрипт удаления

#!/bin/sh

i=0
while [ $i -le 1000 ]
do
 iname=$[1001+$i]
 vconfig rem eth0.333.$iname 1>/dev/null 2>/dev/null

 i=$[$i+1]
done;

 

Работают одинаково быстро, машина полный хлам.

[root@ipoetest sbin]# time make_vl_qinq_test.sh

real    0m6.906s
user    0m0.567s
sys     0m2.646s
[root@ipoetest sbin]# time down_vl_test.sh

real    0m5.993s
user    0m0.126s
sys     0m1.125s

 

[root@ipoetest sbin]# cat /proc/cpuinfo | grep model
model           : 6
model name      : AMD Athlon(tm) II X2 240 Processor

[root@ipoetest sbin]# uname -a
Linux ipoetest 3.10.10 #2 SMP Thu Sep 5 12:53:45 EEST 2013 x86_64 x86_64 x86_64 GNU/Linux

Изменено пользователем kayot

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

kayot

Какой у вас дистрибутив linux? (и ещё интересно посмотреть ethtool -i eth0)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

s.lobanov

Centos 6.4, сетевка HP NC112t на i82574L. Инфу завтра смогу поглядеть, потушил уже ту машину.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

kayot

Спасибо. Скорее всего не надо. Смог добиться похожих результатов на ядре 3.9 на ноутбуке с процессором Intel Atom и сетевушкой на r8169

 

# time ./cr.sh

 

real 0m13.484s

user 0m2.888s

sys 0m7.008s

 

# time ./rm.sh

 

real 0m8.686s

user 0m1.408s

sys 0m3.908s

 

Попробую поменять ядро на 3.10.10, ОС и сервер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Взял .config из elrepo-kernel(ml), собрал на нём ядро в debian7, стало значительно лучше

# time ./int-create.sh 

real	0m1.975s
user	0m0.125s
sys	0m0.305s

# time ./int-rem.sh 

real	0m10.548s
user	0m0.077s
sys	0m1.190s

 

Кто-нибудь по diff-у конфигов(в аттаче) может подсказать какие опции могут влиять на скорость удаления интерфейсов?

config-3.12.0-elrepocfg - конфиг на основе elrepo-kernel(3.11)

config-3.12.0-rc7-custom - конфиг на основе debian7 (3.2)

config-diff.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Новый вывод opreport

samples  %        image name               app name                 symbol name
17077    19.5353  vmlinux                  vmlinux                  cpu_startup_entry
13378    15.3038  vmlinux                  vmlinux                  intel_idle
10371    11.8640  vmlinux                  vmlinux                  poll_idle
5879      6.7253  vmlinux                  vmlinux                  default_send_IPI_mask_sequence_phys
5253      6.0092  vmlinux                  vmlinux                  tick_broadcast_oneshot_control
4877      5.5791  vmlinux                  vmlinux                  cpuidle_enter_state
2335      2.6711  vmlinux                  vconfig                  default_send_IPI_mask_allbutself_phys
2289      2.6185  vmlinux                  vmlinux                  clockevents_notify
1814      2.0751  vmlinux                  vconfig                  default_send_IPI_mask_sequence_phys
1054      1.2057  vmlinux                  vmlinux                  __schedule
868       0.9930  vmlinux                  vmlinux                  native_write_msr_safe
705       0.8065  vmlinux                  vconfig                  smp_call_function_many
644       0.7367  vmlinux                  bash                     flush_tlb_page
613       0.7012  bash                     bash                     /bin/bash
526       0.6017  vmlinux                  vmlinux                  find_busiest_group
477       0.5457  vmlinux                  vmlinux                  hpet_legacy_next_event
461       0.5274  vmlinux                  vmlinux                  menu_select
370       0.4233  vmlinux                  vconfig                  page_fault
325       0.3718  vmlinux                  vmlinux                  native_apic_mem_read
305       0.3489  vmlinux                  vconfig                  generic_exec_single
299       0.3420  vmlinux                  vmlinux                  update_cpu_load_nohz
260       0.2974  vmlinux                  vmlinux                  int_sqrt
242       0.2768  vmlinux                  vmlinux                  rcu_process_callbacks
191       0.2185  vmlinux                  vmlinux                  tick_handle_oneshot_broadcast
187       0.2139  bnx2x.ko                 bnx2x.ko                 bnx2x_set_rx_mode_e1x
...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

13378 15.3038 vmlinux vmlinux intel_idle

эту штуку на роутере тоже лучше выключать, например параметром ядра intel_idle.max_cstate=0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

13378 15.3038 vmlinux vmlinux intel_idle

эту штуку на роутере тоже лучше выключать, например параметром ядра intel_idle.max_cstate=0

 

Спасибо! Удаление стало ещё в 2 раза быстрее

# time ./int-create.sh 

real	0m1.295s
user	0m0.054s
sys	0m0.132s

# time ./int-rem.sh 

real	0m5.119s
user	0m0.000s
sys	0m0.102s

 

новый opreport при удалении интерфейсов

samples  %        image name               app name                 symbol name
914       4.2283  vmlinux                  vconfig                  page_fault
737       3.4095  bash                     bash                     /bin/bash
643       2.9746  vmlinux                  vmlinux                  native_safe_halt
542       2.5074  vmlinux                  vmlinux                  find_busiest_group
528       2.4426  vmlinux                  vmlinux                  load_balance
469       2.1697  vmlinux                  vmlinux                  __schedule
420       1.9430  vmlinux                  vconfig                  unmap_page_range
239       1.1057  vmlinux                  vconfig                  vlan_vid_del
230       1.0640  vmlinux                  vconfig                  proc_lookup_de
227       1.0501  ld-2.13.so               vconfig                  _dl_relocate_object
221       1.0224  vmlinux                  vmlinux                  idle_cpu
211       0.9761  ld-2.13.so               vconfig                  do_lookup_x
202       0.9345  vmlinux                  bash                     copy_page_rep
187       0.8651  vmlinux                  vconfig                  neigh_parms_release
179       0.8281  vmlinux                  vconfig                  flow_cache_flush
169       0.7818  vmlinux                  vconfig                  rb_erase
151       0.6986  vmlinux                  vconfig                  clear_page_c
148       0.6847  vmlinux                  vconfig                  kmem_cache_free
144       0.6662  ld-2.13.so               vconfig                  _dl_lookup_symbol_x
138       0.6384  vmlinux                  vmlinux                  reschedule_interrupt
131       0.6060  vmlinux                  vconfig                  remove_proc_subtree
128       0.5922  vmlinux                  bash                     clear_page_c
125       0.5783  vmlinux                  vconfig                  copy_page_rep
113       0.5228  vmlinux                  vmlinux                  apic_timer_interrupt
103       0.4765  vmlinux                  bash                     page_fault
...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.