Память ussage для буферов сообщений TCP или именованных каналов?

У меня есть группа программ, которые я сегодня испытывал стресс. Я решительно поднял входную нагрузку на программу, и она работала сначала, но у меня была явная утечка памяти, всасывающая память. Единственная проблема заключается в том, что 1) Valgrind настаивает на том, что у меня нет никаких утечек, и 2) это происходит только при высокой скорости приема пакетов.

Одна из возможных сумасшедших идей заключалась в том, что дополнительная память может идти в очередь сообщений из-за того, что моя система не имеет пропускной способности для вывода пакетов так же быстро, как они поступают, заставляя все более крупные буферы передаваемых данных. Программа, которая показывает, как забивание памяти, считывается из сокета TCP и записывается в именованный канал. поэтому у меня есть три вопроса.

  1. Может ли очередь в памяти для хранения подлежащих передаче данных неограниченно увеличиваться для TCP / IP или именованных каналов?

  2. если очередь может и будет расти, будет ли она показываться, что моя программа (одно чтение из TCP и вывод на именованный канал) была памятью hog или память просто отображалась как системная память?

  3. есть ли команда, которую я могу использовать для проверки памяти, выделенной для этих очередей? Я запускаю Centos

Я действительно не думаю, что это причина моей утечки, но опять же я не могу догадаться, что еще мне нужно спросить!

One Solution collect form web for “Память ussage для буферов сообщений TCP или именованных каналов?”

  1. Вообще его довольно ограниченный. Хотя есть два места (по крайней мере), эти буферы могут существовать:
    1. В ядре. Определенно ограничен. Я уверен, что FIFO жестко закодирован, TCP можно установить в /proc/sys/kernel/tcp_wmem (и rmem) и (в пределах ограничений proc) с помощью SO_SNDBUF / SO_RCVBUF . Подробнее см. Справочную страницу tcp (7).
    2. В вашем приложении. Если вы не звоните напрямую и т. Д., Библиотека, которую вы используете, может иметь свои собственные буферы. Они могут быть бесконечными.
    3. ОК. На самом деле есть третье место в ОЗУ на вашем сетевом адаптере. Не может быть увеличен за пределы определенного (довольно малого) предела без пайки, поэтому я игнорирую это. О, и есть кольцевой буфер передачи, для вашего NIC для DMA. Опять же, фиксированный размер (ethtool для настройки, если вообще возможно).
  2. Ядро отображается как системная память. Те, что в вашем приложении будут отображаться как часть виртуального размера вашего приложения (и размер резидента и т. Д.),
  3. netstat -t покажет вам текущий размер очереди отправки и получения для каждого TCP-соединения. Для тех, которые хранятся в вашей библиотеке, проверьте его документацию.

Помните, что память не просочилась, если вы в конечном итоге освободите ее. Если вы просто страдаете от постоянно растущих очередей в вашем приложении, это не просачивается. То же самое, если вы страдаете от постоянно растущей фрагментации памяти.

  • Sshd_config TPCKeepAlive по-прежнему использует незашифрованный канал и, следовательно, уязвим
  • IPv6 через TCP или TCP6
  • Как устранить неполадки при попытке выполнить ping для маршрутизатора в Linux-окне?
  • как подключить ssh 'с указанным портом?
  • Linux Сетевая маршрутизация на виртуальные IP-адреса из другой подсети
  • Какова семантика получения EADDRINUSE, когда не подключен прослушивающий сокет, но соединения открыты
  • БЕЗ использования сетевых команд в Linux, как узнать список открытых портов и процесс, который им принадлежит?
  • / dev / tcp не найден
  • Использование tcpdump для извлечения содержимого NFS RPC
  • Пересылка портов iptables
  • Увеличится ли средняя загрузка моего ящика Linux, если он достигнет дескрипторов файлов или ограничений TCP-соединений?
  • Interesting Posts

    При знаке после shebang?

    Используйте sssd, чтобы присоединиться к машине redhat 7 в домен Active Directory, не запрашивая пароль

    Возникли проблемы с пакетами, которые не попадают в Fedora 16 Apache

    init: /etc/init.conf: Не удается загрузить конфигурацию: нет такого файла или каталога

    Проблема с пакетом Debian: файлы устанавливаются в '/'

    Сохранение возможности обновления / установки пакетов без фактической модернизации Linux Mint

    сортировать на рабочих местах в хронологическом порядке

    как применить этот патч

    Как работает chroot qemu для кросс-компиляции?

    Как установить APT / dpkg на любой Linux, у которого его нет?

    Настройка разрешений с помощью FTP

    Как защитить Apache / MySql / PHPMyAdmin от атаки грубой силы / словаря? (Fail2ban?)

    Последняя строка неверна при разбиении файла на awk

    Загрузка Linux минимально

    btrfs нашел исправленные ошибки диска, Как я могу найти файлы, в которых они находятся?

    Linux и Unix - лучшая ОС в мире.