Колко ядра са нужни на OpenVPN? Зависи от пътя
Един поток може да заеме едно ядро, докато сървърът изглежда без работа. Сравнете пътя в потребителското пространство с разтоварването в ядрото и после измерете паралелността, която наистина обслужвате.
Два сървъра с еднакъв брой процесори могат да поддържат много различна пропускателна способност, защото важният брой е колко ядра може действително да използва активният път за данни. Един демон в потребителското пространство, който обработва пакетите на един клиент, е ограничен до едно ядро, докато път с разтоварване в ядрото може да разпредели тази работа. Нито едно от двете твърдения не казва какво ще направи дадена машина за вашия трафик, затова измерването идва преди броенето на ядра.
Сравнението по-долу е за това къде се обработват пакетите, а не кой продукт е по-бърз по принцип. Това са различни въпроси с различни отговори.
Едно ядро на поток по пътя в потребителското пространство
В традиционна инстанция Community OpenVPN каналът за данни се обработва в потребителското пространство и натоварена връзка може да закове един процесор, докато общата натовареност на машината остава незабележима. Ето защо добавянето на ядра към хост, който вече е наситен на един поток, не променя нищо: планировчикът няма как да раздели тази работа. Структурата един клиент на процес ограничава преноса на един клиент до капацитета на едно ядро, какъвто и да е общият брой ядра. Четете натоварването на всяко ядро поотделно по време на тест, а не общата цифра, иначе тясното място ще изглежда като резерв.
Стартирането на няколко сървърни инстанции на един хост разпределя отделните клиенти между процеси. То не паралелизира една съществуваща връзка и струва отделни пулове, слушатели и решения за маршрутизация.
Другият път: пакетите в ядрото
Разтоварване на канала за данни премества поддържаната обработка на пакети и криптографията в ядрото, където работата може да използва няколко ядра. Това променя въпроса за капацитета от едно ядро към машината, но само за конфигурации, които реализацията поддържа: съвместим модул за ядрото, подходящ шифър за данни и конфигурация без функциите, които разтоварването изключва. Инсталирането на модул не е същото като използването му, затова потвърдете активния режим от собствения журнал на връзката или от изхода за състоянието. Банерът за версия доказва какво е налично, а не какво работи.
Разтоварването не премахва удостоверяването или контролния канал и не превръща всяко внедряване в многоядрено. То е локално ускорение на съвместим път за данни и изискванията се различават според платформата и версията.
Какво всъщност решава сравнението
Истинският избор е между приемане на таван на поток, разпределяне на клиентите между инстанции и преминаване към поддържана конфигурация с разтоварване. Всяко решение адресира различен проблем и изборът на грешното струва пари, без да помръдне числото. Тестът, който има значение, е този, оформен като начина, по който се използва услугата.
Измерете три форми: един клиент с един трансфер, един клиент с няколко потока и няколко клиента заедно. Високият общ резултат в третата не доказва, че едно изтегляне може да го достигне, а бавният единичен трансфер не доказва, че сървърът е изчерпал общия си капацитет. Резултатите отговарят на различни въпроси и двата си заслужават.
Само средната форма ви казва дали паралелността в един клиент помага, което обикновено е свойство на транспорта и пътя, а не на сървъра. Само първата ви казва тавана, който ще види едно приложение. Пазете натоварването еднакво между пусковете, за да има сравнението смисъл.
Измерване, така че числото да има смисъл
Записвайте версиите на сървъра и клиента, активния път за данни, договорения шифър за данни, посоката на преноса, размерите на пакетите, броя потоци и продължителността. Следете активността на всяко ядро и загубите на пакети и опашки в двата края, защото интерфейсът на клиента, мрежата на доставчика или целевата услуга могат да станат ограничението първи. Променяйте по една променлива наведнъж, защото пуск, който сменя шифър, компресия, MTU и разтоварване заедно, не може да ви каже кое е имало значение. Пазете политиката за достъп, която наистина смятате да внедрите, по време на теста, защото лабораторна схема, която никой няма да използва, доказва малко.
После оставете резерв за контролния канал, за предоговарянето и за всичко останало, което работи на хоста.
Докладвайте какво е издържала конфигурацията при предвидената паралелност, а не скорост, екстраполирана от чужд хардуер. Число с приложени условия на теста е полезно; обещание без тях е догадка, която ще ви цитират обратно.