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

FreeBSD 8.0-RELEASE & em taskq 100% Дропы на em.

Имеем платформу: шасси Intel SR1520CLR; плата Intel S5000VCL; процессоры Intel Xeon 2xE5450; память 8Gb(4x2Gb). На плате сетевой контроллер HY82563EB.

Из софта - amd64 FreeBSD 8.0-RELEASE + ipnat + bgpd больше ничего, pf - пустой. flowcontrol на какалисте отключен, патчкорды - заменены, счётчики со стороны коммутатора - ошибок0.

 

em taskq по обеим сетевым картам догоняется до 100% и начинаются дикие дропы. Перекрутил всё что можно. Баг драйвера/чипа? Менять платформу или докупать "нормальные" сетевые карты x4 ?

 

Есть соображения?

 

#pciconf -lv | grep em -A4
em0@pci0:4:0:0: class=0x020000 card=0x34808086 chip=0x10968086 rev=0x01 hdr=0x00
   vendor     = 'Intel Corporation'
   device     = 'Intel PRO/1000 EB (Intel PRO/1000 EB)'
   class      = network
   subclass   = ethernet
em1@pci0:4:0:1: class=0x020000 card=0x34808086 chip=0x10968086 rev=0x01 hdr=0x00
   vendor     = 'Intel Corporation'
   device     = 'Intel PRO/1000 EB (Intel PRO/1000 EB)'
   class      = network
   subclass   = ethernet
# top -SHP 10
last pid:  2495;  load averages:  1.98,  1.12,  0.97                                                                                  up 0+01:04:43  14:06:34
115 processes: 12 running, 84 sleeping, 19 waiting
CPU 0:  0.0% user,  0.0% nice,  0.0% system,  1.6% interrupt, 98.4% idle
CPU 1:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 2:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 3:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 4:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 5:  0.0% user,  0.0% nice,  100% system,  0.0% interrupt,  0.0% idle
CPU 6:  0.0% user,  0.0% nice,  100% system,  0.0% interrupt,  0.0% idle
CPU 7:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
Mem: 194M Active, 17M Inact, 254M Wired, 1552K Cache, 59M Buf, 7420M Free
Swap: 2048M Total, 2048M Free
 PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
  11 root     171 ki31     0K   128K CPU3    3  64:04 100.00% {idle: cpu3}
  11 root     171 ki31     0K   128K CPU7    7  64:03 100.00% {idle: cpu7}
  11 root     171 ki31     0K   128K CPU2    2  64:02 100.00% {idle: cpu2}
  11 root     171 ki31     0K   128K CPU4    4  64:01 100.00% {idle: cpu4}
  11 root     171 ki31     0K   128K RUN     1  63:56 100.00% {idle: cpu1}
  11 root     171 ki31     0K   128K CPU0    0  63:53 100.00% {idle: cpu0}
   0 root     -68    0     0K   128K CPU5    5  34:43 100.00% {em0 taskq}
   0 root     -68    0     0K   128K CPU6    6  35:04 99.22% {em1 taskq}
  11 root     171 ki31     0K   128K RUN     5  29:21  0.00% {idle: cpu5}
  11 root     171 ki31     0K   128K RUN     6  28:55  0.00% {idle: cpu6}
#ipnat -s
mapped  in      56960398        out     46450124
added   2116713 expired 899802
no memory       0       bad nat 53680
inuse   153279
orphans 0
rules   11
wilds   2
hash efficiency 21.17%
bucket usage    99.04%
minimal length  0
maximal length  14
average length  4.723
TCP Entries per state
    0     1     2     3     4     5     6     7     8     9    10    11
   64  9142   638   169  6829  1502  1181   146    71     0 52942  2223
#netstat -w 1
           input        (Total)           output
  packets  errs      bytes    packets  errs      bytes colls
    70877     0   52707660      69823     0   53552204     0
    77741     0   59421254      77236     0   60390869     0
    60818     0   42946734      60705     0   43700356     0
    74790     0   55339974      75180     0   56223304     0
    69843     0   51168760      69556     0   51922404     0
    75589     0   54066274      75302     0   54760740     0
    70394     0   49559422      70050     0   50185198     0
    62569     0   42527506      61335     0   43054657     0
    24572   240   12885944      25087     0   13099941     0
    24470   195   13088474      24324     0   13251497     0
    21694   449   12366204      21473     0   12498255     0
    23362   179   13196550      22716     0   13299346     0
    21030   225   11287284      20594     0   11475381     0
    19974   783   10630106      19565     0   10684715     0
    20530   159   10819506      20869     0   11005304     0
    19882     6   10153908      19209     0   10257941     0
    21820   268   11455458      22130     0   11560552     0
#
Mar  2 14:10:46 artek kernel: em0: Adapter hardware address = 0xffffff80005dd530
Mar  2 14:10:46 artek kernel: em0: CTRL = 0x401c4241 RCTL = 0x8002
Mar  2 14:10:46 artek kernel: em0: Packet buffer = Tx=16k Rx=32k
Mar  2 14:10:46 artek kernel: em0: Flow control watermarks high = 30720 low = 29220
Mar  2 14:10:46 artek kernel: em0: tx_int_delay = 600, tx_abs_int_delay = 1000
Mar  2 14:10:46 artek kernel: em0: rx_int_delay = 0, rx_abs_int_delay = 1000
Mar  2 14:10:46 artek kernel: em0: fifo workaround = 0, fifo_reset_count = 0
Mar  2 14:10:46 artek kernel: em0: hw tdh = 135, hw tdt = 135
Mar  2 14:10:46 artek kernel: em0: hw rdh = 334, hw rdt = 333
Mar  2 14:10:46 artek kernel: em0: Num Tx descriptors avail = 4096
Mar  2 14:10:46 artek kernel: em0: Tx Descriptors not avail1 = 0
Mar  2 14:10:46 artek kernel: em0: Tx Descriptors not avail2 = 0
Mar  2 14:10:46 artek kernel: em0: Std mbuf failed = 0
Mar  2 14:10:46 artek kernel: em0: Std mbuf cluster failed = 0
Mar  2 14:10:46 artek kernel: em0: Driver dropped packets = 0
Mar  2 14:10:46 artek kernel: em0: Driver tx dma failure in encap = 0
Mar  2 14:10:48 artek kernel: em1: Adapter hardware address = 0xffffff800061b530
Mar  2 14:10:48 artek kernel: em1: CTRL = 0x401c4241 RCTL = 0x8002
Mar  2 14:10:48 artek kernel: em1: Packet buffer = Tx=16k Rx=32k
Mar  2 14:10:48 artek kernel: em1: Flow control watermarks high = 30720 low = 29220
Mar  2 14:10:48 artek kernel: em1: tx_int_delay = 600, tx_abs_int_delay = 1000
Mar  2 14:10:48 artek kernel: em1: rx_int_delay = 0, rx_abs_int_delay = 1000
Mar  2 14:10:48 artek kernel: em1: fifo workaround = 0, fifo_reset_count = 0
Mar  2 14:10:48 artek kernel: em1: hw tdh = 3017, hw tdt = 3017
Mar  2 14:10:48 artek kernel: em1: hw rdh = 3215, hw rdt = 3212
Mar  2 14:10:48 artek kernel: em1: Num Tx descriptors avail = 4096
Mar  2 14:10:48 artek kernel: em1: Tx Descriptors not avail1 = 0
Mar  2 14:10:48 artek kernel: em1: Tx Descriptors not avail2 = 0
Mar  2 14:10:48 artek kernel: em1: Std mbuf failed = 0
Mar  2 14:10:48 artek kernel: em1: Std mbuf cluster failed = 0
Mar  2 14:10:48 artek kernel: em1: Driver dropped packets = 0
Mar  2 14:10:48 artek kernel: em1: Driver tx dma failure in encap = 0
Mar  2 14:10:56 artek kernel: em0: Excessive collisions = 0
Mar  2 14:10:56 artek kernel: em0: Sequence errors = 0
Mar  2 14:10:56 artek kernel: em0: Defer count = 0
Mar  2 14:10:56 artek kernel: em0: Missed Packets = 11182
Mar  2 14:10:56 artek kernel: em0: Receive No Buffers = 180
Mar  2 14:10:56 artek kernel: em0: Receive Length Errors = 0
Mar  2 14:10:56 artek kernel: em0: Receive errors = 0
Mar  2 14:10:56 artek kernel: em0: Crc errors = 0
Mar  2 14:10:56 artek kernel: em0: Alignment errors = 0
Mar  2 14:10:56 artek kernel: em0: Collision/Carrier extension errors = 0
Mar  2 14:10:56 artek kernel: em0: RX overruns = 4
Mar  2 14:10:56 artek kernel: em0: watchdog timeouts = 0
Mar  2 14:10:56 artek kernel: em0: RX MSIX IRQ = 0 TX MSIX IRQ = 0 LINK MSIX IRQ = 0
Mar  2 14:10:56 artek kernel: em0: XON Rcvd = 0
Mar  2 14:10:56 artek kernel: em0: XON Xmtd = 0
Mar  2 14:10:56 artek kernel: em0: XOFF Rcvd = 0
Mar  2 14:10:56 artek kernel: em0: XOFF Xmtd = 0
Mar  2 14:10:56 artek kernel: em0: Good Packets Rcvd = 60371538
Mar  2 14:10:56 artek kernel: em0: Good Packets Xmtd = 48744229
Mar  2 14:10:56 artek kernel: em0: TSO Contexts Xmtd = 0
Mar  2 14:10:56 artek kernel: em0: TSO Contexts Failed = 0
Mar  2 14:10:58 artek kernel: em1: Excessive collisions = 0
Mar  2 14:10:58 artek kernel: em1: Sequence errors = 0
Mar  2 14:10:58 artek kernel: em1: Defer count = 0
Mar  2 14:10:58 artek kernel: em1: Missed Packets = 448453
Mar  2 14:10:58 artek kernel: em1: Receive No Buffers = 410975
Mar  2 14:10:58 artek kernel: em1: Receive Length Errors = 0
Mar  2 14:10:58 artek kernel: em1: Receive errors = 0
Mar  2 14:10:58 artek kernel: em1: Crc errors = 0
Mar  2 14:10:58 artek kernel: em1: Alignment errors = 0
Mar  2 14:10:58 artek kernel: em1: Collision/Carrier extension errors = 0
Mar  2 14:10:58 artek kernel: em1: RX overruns = 2089
Mar  2 14:10:58 artek kernel: em1: watchdog timeouts = 0
Mar  2 14:10:58 artek kernel: em1: RX MSIX IRQ = 0 TX MSIX IRQ = 0 LINK MSIX IRQ = 0
Mar  2 14:10:58 artek kernel: em1: XON Rcvd = 0
Mar  2 14:10:58 artek kernel: em1: XON Xmtd = 0
Mar  2 14:10:58 artek kernel: em1: XOFF Rcvd = 0
Mar  2 14:10:58 artek kernel: em1: XOFF Xmtd = 0
Mar  2 14:10:58 artek kernel: em1: Good Packets Rcvd = 48575954
Mar  2 14:10:58 artek kernel: em1: Good Packets Xmtd = 59456733
Mar  2 14:10:58 artek kernel: em1: TSO Contexts Xmtd = 0
Mar  2 14:10:58 artek kernel: em1: TSO Contexts Failed = 0
# cat /boot/loader.conf
hw.em.rxd=4096
hw.em.txd=4096
kern.ipc.nmbclusters=32768
vm.kmem_size=2G
vm.kmem_size_max=2G
#cat /etc/sysctl.conf
dev.em.0.rx_int_delay=600
dev.em.1.rx_int_delay=600
dev.em.0.tx_int_delay=600
dev.em.1.tx_int_delay=600
dev.em.0.rx_abs_int_delay=1000
dev.em.1.rx_abs_int_delay=1000
dev.em.0.tx_abs_int_delay=1000
dev.em.1.tx_abs_int_delay=1000
dev.em.0.rx_processing_limit=1000
dev.em.1.rx_processing_limit=1000
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.ip.intr_queue_maxlen=4096
net.inet.tcp.sendspace=65535
net.inet.tcp.recvspace=65535
net.inet.tcp.rfc1323=1
#

 

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


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

после выполнения команды egrep '^dev\.em\.' /etc/sysctl.conf | while read line; do sysctl $line; done

нагрузка меньше? Если да то можно поместить например в /etc/rc.local

 

ipnat лучше заменить на ipfw nat (ng_nat)

 

после перехода выставить:

sysctl net.inet.ip.fastforwarding=1

 

 

 

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


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

> после выполнения команды egrep '^dev\.em\.' /etc/sysctl.conf | while read line; do sysctl $line; done

нагрузка меньше? Если да то можно поместить например в /etc/rc.local

 

Одинаково. В sysctl значения выставляются и при перезагрузке.

 

Не могу понять, 8 ядер не могут перелопатить 80-100kk пакетов? Ну не на 72ой же нат собирать... (;

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


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

> после выполнения команды egrep '^dev\.em\.' /etc/sysctl.conf | while read line; do sysctl $line; done

нагрузка меньше? Если да то можно поместить например в /etc/rc.local

 

Одинаково. В sysctl значения выставляются и при перезагрузке.

 

Не могу понять, 8 ядер не могут перелопатить 80-100kk пакетов? Ну не на 72ой же нат собирать... (;

не выставляются они... по systat -vm 1 видно должно быть прерывания до и после.

 

у меня на 8 ядер стоит 8 интерфейсов и все собраны через if_lagg нагрузка почти равномерная.

# netstat -w1

input (Total) output

packets errs bytes packets errs bytes colls

202242 0 123393653 196162 0 122590305 0

197818 0 119262534 192048 0 118497432 0

196336 0 119796293 190612 0 119041946 0

199774 0 121871242 194107 0 121127421 0

 

 

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


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

Asco С чего Вы вдруг решили что все Ваши 8 ядер работают? Вы конечно не привели ни top ни systat, не сказали что у Вас в loader.conf и sysctl.conf, но здается мне, что у Вас работают только 2 ядра...

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


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

Я не совсем пониаю, почему у вас при выставлении rx_int_delay на сетевухах в 600 истинное значение по sysctl аж...0. Не в этом ли проблема?

И что у вас выдаст по sysctl -a |grep isr?

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


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

Может поможет:

 

#systat -vm 1
   1 users    Load  0.83  0.84  0.70                   3 мар 13:40

Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
       Tot   Share      Tot    Share    Free           in   out     in   out
Act  199312    6208  1631736     7868 7440480  count
All  251184    6892 1075456k    12452          pages
Proc:                                                            Interrupts
 r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        cow   26763 total
            55      6001   30  225 2760  189   25     25 zfod        atkbd0 1
                                                         ozfod       ata0 irq14
3.6%Sys   0.0%Intr  0.0%User  0.0%Nice 96.4%Idle        %ozfod       atapci1 20
|    |    |    |    |    |    |    |    |    |    |       daefr  3001 cpu0: time
==                                                        prcfr  1405 em0 irq256
                                        5 dtbuf          totfr  1353 em1 irq257
Namei     Name-cache   Dir-cache    100000 desvn          react  3001 cpu1: time
  Calls    hits   %    hits   %      9620 numvn          pdwak  3001 cpu3: time
      8       8 100                  1376 frevn          pdpgs  3001 cpu2: time
                                                         intrn  3000 cpu6: time
Disks   ad4   ad6   ar0                            425040 wire   3000 cpu4: time
KB/t   0.00  0.00  0.00                            188296 act    3000 cpu7: time
tps       0     0     0                             21396 inact  3001 cpu5: time
MB/s   0.00  0.00  0.00                               208 cache
%busy     0     0     0                           7440272 free
                                                  326000 buf
# vmstat -i
interrupt                          total       rate
irq1: atkbd0                         505          0
irq14: ata0                           36          0
irq20: atapci1                     75529          6
cpu0: timer                     33541495       2997
irq256: em0                     13155792       1175
irq257: em1                     12177707       1088
cpu1: timer                     33541192       2997
cpu3: timer                     33540341       2997
cpu2: timer                     33540341       2997
cpu6: timer                     33540049       2997
cpu4: timer                     33539777       2997
cpu7: timer                     33540049       2997
cpu5: timer                     33539767       2997
Total                          293732580      26254
# sysctl net.isr.direct
net.isr.direct: 1
#

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


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

Надоело

#echo >> /boot/loader.conf

net.isr.maxthreads=8

net.isr.direct=0

net.isr.direct_force=0

net.inet.ip.intr_queue_maxlen=1024

net.route.netisr_maxqlen=1024

hw.em.rxd=4096

hw.em.txd=4096

 

#reboot

 

Обновиться до STABLE

ipnat заменить лучьше на pf

 

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

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


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

net.isr.bindthreads: Bind netisr threads to CPUs.

Имеет смысл включать ?

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


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

Ivan_83

Я включал, результат ожидаемый, тоесть прибивало треды netisr и em taskq к ядрам.

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


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

net.isr.maxthreads=8
net.isr.direct=0
net.isr.direct_force=0
net.inet.ip.intr_queue_maxlen=1024
net.route.netisr_maxqlen=1024
hw.em.rxd=4096
hw.em.txd=4096

 

Надоело, это, простите, самый идиотский набор символов который я видел.

 

Зачем, net.isr.maxthreads=8 при net.isr.direct=0 ?!? Для красоты?

Зачем на многопроцессорных системах net.isr.direct=0, чтобы копить inet.ip.intr_queue_maxlen, что приведет к росту swi: net?

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

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


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

Зачем, net.isr.maxthreads=8 при net.isr.direct=0 ?!? Для красоты?

Ну если портов 2 а ядер 8 то прямая обработка пакетов не конает, а рост swi1:net не критичен, так как net.isr.maxthreads=8. В конечном итоге наконец-то заработают все ядра, а не только 2. Если надо net.isr.direct=1 то прийдется докупить em, или откатиться на 7 и яндексы, или купить igb.

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


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

Почему не будет работать прямая обработка пакетов, когда количество ядер больше числа сетевых?

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


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

Потому что при прямой обработке будет задействовано 2 ядра. Остальные 6 будут спокойно курить бамбук. Подсистема netisr в 8 релизе была полностью переписана, и теперь она распределяется по net.isr.maxthreads ядрам. Теоретически, вся ядра будут задействованы. Вот только работает оно пока как-то невнятно, некоторые ядра гораздо больше грузит, а некоторые недогружает...

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


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

Все зависит от конкретного случая. Если комп в роли бордера или шейпера то картина будет одна, если PPPoE концентратор или PPtP сервер то совсем другая.

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


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

При:

net.isr.maxthreads=8

net.isr.direct=0

 

10 минут нормальная производительность ~140-180kk, потом 2 процесса netisr в 100% как результат - задержки 50-100ms + производительность падает до ~25-40kk. По top'у видно что используется 2 ядра из 8ми.

 

summary-day.png

 

# top -SHP 12
last pid:  2339;  load averages:  0.09,  0.11,  0.08                                                                                  up 0+00:21:07  14:01:18
127 processes: 11 running, 92 sleeping, 24 waiting
CPU 0:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 1:  0.0% user,  0.0% nice,  0.0% system, 96.4% interrupt,  3.6% idle
CPU 2:  0.0% user,  0.0% nice,  0.0% system, 97.3% interrupt,  2.7% idle
CPU 3:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 4:  0.9% user,  0.0% nice,  0.0% system,  0.0% interrupt, 99.1% idle
CPU 5:  0.0% user,  0.0% nice,  3.6% system,  0.0% interrupt, 96.4% idle
CPU 6:  0.0% user,  0.0% nice,  3.6% system,  0.0% interrupt, 96.4% idle
CPU 7:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
Mem: 187M Active, 15M Inact, 223M Wired, 120K Cache, 18M Buf, 7461M Free
Swap: 2048M Total, 2048M Free

 PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
  11 root     171 ki31     0K   128K CPU0    0  19:52 100.00% {idle: cpu0}
  12 root     -44    -     0K   416K CPU1    1  10:07 100.00% {swi1: netisr 7}
  12 root     -44    -     0K   416K CPU2    2  10:05 100.00% {swi1: netisr 0}
  11 root     171 ki31     0K   128K CPU7    7  20:28 99.76% {idle: cpu7}
  11 root     171 ki31     0K   128K CPU3    3  20:27 99.76% {idle: cpu3}
  11 root     171 ki31     0K   128K RUN     4  20:29 99.37% {idle: cpu4}
  11 root     171 ki31     0K   128K CPU6    6  19:56 97.80% {idle: cpu6}
  11 root     171 ki31     0K   128K CPU5    5  19:46 96.88% {idle: cpu5}
  11 root     171 ki31     0K   128K RUN     2  10:33  1.71% {idle: cpu2}
  11 root     171 ki31     0K   128K RUN     1  10:59  1.22% {idle: cpu1}
   0 root     -68    0     0K   128K -       5   0:45  0.00% {em0 taskq}
   0 root     -68    0     0K   128K -       6   0:38  0.00% {em1 taskq}

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


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

Как уже говорилось выше, попробуйте заюзать pf nat.

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


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

Только не надо забывать, что PF с многопроцессорностью дружит плоховато.

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


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

Ну, 30 килопакетов топикстартера я думаю, pf и на одном ядре снатит.

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


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

Пробуй обновиться до STABLE

pf нат, или хоть чтото другое..только не то зло что у тебя

P.S. У всех работает а у тебя нет, меняй прокладку (с)

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


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

или откатиться на 7 и яндексы.

раз такое дело, мы выложили восьмую версию

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


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

раз такое дело, мы выложили восьмую версию

 

Это радостная новость...будем тестить ;)

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


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

wawa

Большое спасибо за труд и любезность поделиться с общественностью. Скажите, а стоит-ли ждать появления оптимизированного igb драйвера?

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


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

Надо ли для восьмёрочных драйверов выключать ISR?

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


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

Join the conversation

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

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

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

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

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

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

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