Параллель гну, не использующая весь ЦП

С точки зрения nf_conntrack_max, Вы только ограничены суммой доступной памяти ядра. Память ядра не выгружаема, таким образом, это - фактическая RAM.

TLDR: В современных системах я установил это на 128k с по-видимому никаким вредным воздействием.

Другой настраиваемый, который можно хотеть настроить, однако, /proc/sys/net/netfilter/nf_conntrack_buckets. Каждый раз, когда пакет исследован, он хешируется в один из hashsize блоки (на основе src/dst IP и порта). Каждый блок содержит связанный список, который затем должен искаться конкретное соединение. Увеличение числа блоков должно (до определенного момента), сокращают число узлы в связанном списке, который должен быть пересечен и поэтому увеличить производительность. Компромисс - это, чем больше блоков Вы имеете, тем выше вероятность пустых блоков. Пустой блок берет память ядра. Вот почему Вы не устанавливаете hashsize = nf_conntrack_max. Я не мог найти любые рекомендации на установке размера хэша кроме оператора "Under normal circumstances ip_conntrack_max equals 8 * hashsize".

Другая вещь отметить состоит в том, что, когда Ваши соединения являются недолгими (например, веб-сервер) у Вас может быть много соединений в состоянии TIME_WAIT с соответствующими записями в хеше conntrack. cat /proc/net/nf_conntrack | grep TIME | wc -l (ip_conntrack на более старых ядрах) или iptstate должен сказать Вам эту информацию. Для сокращения тайм-аута для них изменяются /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait. Вы, вероятно, хотели бы измениться /proc/sys/net/ipv4/tcp_fin_timeout также.

Наконец, если Вам действительно нужна производительность, и Вы не можете позволить себе RAM, от которой Вы могли бы отключить брандмауэр полностью и вставить выделенный брандмауэр сервера.

0
задан 14 May 2014 в 19:58
2 ответа

Я столкнулся с этой проблемой. HAProxy по умолчанию работает с параметром http-tunnel , если вы не укажете что-то вроде option httpclose . Я пробовал что-то вроде этого:

defaults
    option httpclose
    ...

backend http
    no option httpclose
    server devweb01 10.10.10.10:80 check

Но это не сработало. Когда я удалил параметр httpclose из раздела defaults , это сработало. Я также попытался добавить параметр http-tunnel в свой бэкэнд, но это не помогло.

Если ответ правильный и полностью поддерживается, вы можете попробовать новую функцию.

cat file | parallel --pipe ...

максимальная скорость составляет около 100 МБ / с.

Новая экспериментальная опция --pipepart обеспечивает скорость> 2 ГБ / с, но требует in.txt, чтобы быть реальным (доступным для поиска) файлом:

parallel -a in.txt --block 100M --pipepart python parse.py
3
ответ дан 4 December 2019 в 11:28

-N1 заставляет один процесс быть создается в каждой строке. Вы видите накладные расходы на параллельную настройку. Вам следует изменить скрипт python для обработки более чем одной строки. Тогда cat in.txt | parallel --pipe python parse.py должен полностью использовать ЦП.

2
ответ дан 4 December 2019 в 11:28

Теги

Похожие вопросы