The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Оптимизация сетевой карты и DMA режим, !*! oasjdfioasjdf, 24-Июн-11, 12:56  [смотреть все]
Добрый день,

в последнее время сетевая карта на веб сервере перестала справляться с нагрузкой

Подскажите какие есть возможности оптимизации и как проверить включен ли DMA режим?

CentOS, kernel 2.6.18, сетевая карта интегрированная, материнка TYAN i5100X S771

  • Оптимизация сетевой карты и DMA режим, !*! anonymous, 22:09 , 24-Июн-11 (1)
    > в последнее время сетевая карта на веб сервере перестала справляться с нагрузкой
    > Подскажите какие есть возможности оптимизации и как проверить включен ли DMA режим?
    > CentOS, kernel 2.6.18, сетевая карта интегрированная, материнка TYAN i5100X S771

    возможности оптимизации описаны в документации на драйвер e1000

    http://www.intel.com/support/network/sb/CS-009209.htm

  • Оптимизация сетевой карты и DMA режим, !*! Дядя_Федор, 22:43 , 24-Июн-11 (2)
    Некоторые параметры можно регулировать при помощи утилиты ethtool. Например, на гиговых линках вместо дефолтных RX/TX выставить их (при помощи ключа -G) в максимальные 4096. Можно еще выставить очередь побольше txqueuelen - по дефолту она ставится в 1000. ifconfig-ом можно увеличить до 5000, например. тем же ethtool можно посмотреть статистику сетевой карты. Вот, например, у меня на гиговом линке (стоит поток в 250 Мбит - файлопомойка, в пике бывает под 800):
    ethtool -S eth0
    NIC statistics:
         rx_packets: 5340661595
         tx_packets: 10477922476
         rx_bytes: 936904612202
         tx_bytes: 15475615496524
         rx_broadcast: 67824
         tx_broadcast: 1
         rx_multicast: 199
         tx_multicast: 0
         rx_errors: 2
         tx_errors: 0
         tx_dropped: 0
         multicast: 199
         collisions: 0
         rx_length_errors: 0
         rx_over_errors: 0
         rx_crc_errors: 1
         rx_frame_errors: 0
         rx_no_buffer_count: 0
         rx_missed_errors: 0
         tx_aborted_errors: 0
         tx_carrier_errors: 0
         tx_fifo_errors: 0
         tx_heartbeat_errors: 0
         tx_window_errors: 0
         tx_abort_late_coll: 0
         tx_deferred_ok: 0
         tx_single_coll_ok: 0
         tx_multi_coll_ok: 0
         tx_timeout_count: 0
         tx_restart_queue: 0
         rx_long_length_errors: 0
         rx_short_length_errors: 0
         rx_align_errors: 0
         tx_tcp_seg_good: 1144725332
         tx_tcp_seg_failed: 0
         rx_flow_control_xon: 0
         rx_flow_control_xoff: 0
         tx_flow_control_xon: 0
         tx_flow_control_xoff: 0
         rx_long_byte_count: 936904612202
         rx_csum_offload_good: 5340575116
         rx_csum_offload_errors: 573
         rx_header_split: 0
         alloc_rx_buff_failed: 0
         tx_smbus: 0
         rx_smbus: 67878
         dropped_smbus: 0
         rx_dma_failed: 0
         tx_dma_failed: 0
    Можно еще с настройками сетевого стека пограться. У меня во чего в sysctl.conf:
    net.core.rmem_max=1000000
    net.core.wmem_max=1000000
    net.ipv4.tcp_rmem=4096 87380 1000000
    net.ipv4.tcp_wmem=4096 65536 1000000
    net.ipv4.tcp_no_metrics_save = 1
    net.core.netdev_max_backlog = 2500
    Можно использовать другие Congession Control Algorithms - http://linuxgazette.net/135/pfeiffer.html Ну и до кучи - http://fasterdata.es.net/fasterdata/host-tuning/linux/ А вообще сетевуха обычно вешается не от величины трафика а по PPS - посмотреть можно при помощи iptraf (например). Ну и прерывание каждой сетевухи надо вешать на отдельное ядро (в случае многоядерности) - используя аффинити - http://www.linuxjournal.com/article/6799 В общем - задача комплексная. И творческая. :) Тут главное не перемудрить.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру