Что должна определить формула, сколько памяти сокет использует в соответствии с Linux?

Можно установить терминал гнома на использовании Mac OS X fink, или другой инструмент пакета Unix, доступный на Mac. У Вас должно будет быть выполнение X11 хотя, который не может быть идеальным, в зависимости от Ваших потребностей. Кроме того, я предложил бы изучить фактическую оболочку определенные команды для того, чтобы переместиться в терминале, поскольку это обычно будет то же независимо от эмулятора терминала, Вы используете. Таким образом, пока у Вас есть оболочка удара, Ctrl-a получит Вас к началу строки в любом терминале (терминал гнома, kterm, xterm, rxvt, и т.д.) предполагающий, что они не делают чего-то глупого как кража Ваших управляющих символов!

Как отмечено в других ответах, существуют также другие терминальные альтернативы для MacOS - iterm2 быть наиболее часто используемым.

11
01.02.2012, 08:29
3 ответа

Если можно изменить исходный код, то используйте rusage данные, чтобы измерить RSS и записать, сколько соединений TCP находится в игре во время измерения.

Если исходный код не может быть изменен, то используйте RSS сетевого приложения, как сообщается вершиной или PS и получите количество сетевых соединений во время измерения от lsof -i.

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

Конечно, существует намного больше вещей, которые Вы могли измерить, в особенности Вы могли бы хотеть измерить Использование оперативной памяти ядра, хотя tcp структуры данных должны быть предсказуемы и измеримы заранее. В любом случае взгляните на этот вопрос https://serverfault.com/questions/10852/what-limits-the-maximum-number-of-connections-on-a-linux-server для получения дополнительной информации о настройке TCP и как получить четкое представление о том, что происходит в сетевом стеке.

2
27.01.2020, 19:59
  • 1
    Спасибо за выделение измерения и для указания на меня к ссылкам, которые показывают, как собрать те метрики! –  Tim Stewart 01.02.2012, 17:52

tcp_mem более важен, потому что он определяет, как стопка tcp должна вести себя когда дело доходит до использования памяти. IMO отправляют и получают буфер, должен быть кратным tcp_mem. Вот ссылка на формулу для, получают буфер: http://www.acc.umu.se/~maswan/linux-netperf.txt. Короче говоря:

Издержки: window/2^tcp_adv_win_scale (tcp_adv_win_scale значение по умолчанию 2), Так для параметров значения по умолчанию Linux для получить окна (tcp_rmem): 87380 - (87380 / 2^2) = 65536. Учитывая трансатлантическую ссылку (RTT на 150 мс), максимальная производительность заканчивается в: 65536/0.150 = 436 906 байтов/с или приблизительно 400 кбайт/с, который является действительно медленным сегодня. С увеличенным размером по умолчанию: (873800 - 873800/2^2)/0.150 = 4 369 000 байтов/с, или о 4Mbytes/s, который разумен для современной сети. И обратите внимание, что это - значение по умолчанию, если отправитель будет настроен с большим размером окна, то это счастливо увеличит масштаб до 10 раз этого (8738000*0.75/0.150 = ~40Mbytes/s), довольно хороший для современной сети.

Вот то, что статья говорит о tcp_mem:

То, что Вы удаляете, является искусственным пределом tcp производительности без того предела, Вы ограничены доступной сквозной пропускной способностью и потерей. Таким образом, Вы могли бы закончить тем, что насыщали свой восходящий канал эффективнее, но tcp способен обрабатывать это.

IMO большая середина tcp_mem значение ускоряет соединение в потере меньшей безопасности и немного увеличивает память usuage.

Можно контролировать сетевой стек с:

grep skbuff /proc/slabinfo
8
27.01.2020, 19:59
  • 1
    Спасибо за информативный ответ. Это показывает, сколько я должен узнать о сетях. –  Tim Stewart 01.02.2012, 17:53

David предоставил очень хороший ответ на вопрос, как спросили, однако если Вы не будете исключительно использовать LFNs, затем даже на основанном на событии сервере, буферы TCP, вероятно, будут только небольшой частью места для каждого подключения.

Для планирования мощностей нет никакой замены для тестирования сервера и вычисления регрессии использования памяти загрузкой.

1
27.01.2020, 19:59
  • 1
    Благодарит, замечательно, когда простая формула сделает, но существуют те времена, когда просто необходимо иметь размеры. –  Tim Stewart 01.02.2012, 17:50

Теги

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