Программная оптимизация для виртуальных машин

Это зависит от реализации провайдера облачных вычислений:

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

blockquote>

https://kubernetes.io/docs/concepts/services-networking/#loadbalancer

В случае Google Kubernetes Engine (GKE), Вот как это работает :

При использовании внешнего балансировщика нагрузки поступающий трафик первоначально направляется на узел с использованием правила пересылки, связанного с сетью GCP. После того, как трафик достигает узла, узел использует свою таблицу NAT iptables, чтобы выбрать Pod. kube-proxy управляет правилами iptables на узле.

BLOCKQUOTE>

12
задан VolkerK 5 March 2009 в 19:07
поделиться

4 ответа

Единственный совет, который я могу дать Вам, является тщательным использованием mlock () / mlockall ().. в то время как высматривающий ошибочные драйверы воздушного шара.

Например, если гость Xen загружается с 1 ГБ, то увеличился вниз к 512 МБ, его очень типичное, что привилегированный домен НЕ смотрел на то, сколько памяти паравиртуализированное ядро на самом деле обещало процессам (т.е. Committed_AS). На самом деле, с Xen, если это значение не помещается в Xenbus, привилегированный хост понятия не имеет, что сделает такой воздушный шар. Я полагаю, что это также совпадает с KVM, в зависимости от того, как ядро настроено.. но Ваш вопрос предполагает, что мы ничего не знаем о таких вещах :)

Так, защитите материал (быть осторожным, но благоразумным), который просто не может быть разбит на страницы, всегда составлять 'небо, падает' сценарий.

Аналогично, использование posix_fadvise () / posix_madvise () для сообщения ядра PV, сколько Вы делаете или не нуждаться в буферизации, всегда является хорошей идеей.

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

Я очень (еще) не использую KVM, хотя я планирую исследовать его больше в будущем. Однако 90% материала, который я писал в последнее время, специально предназначены для работы паравиртуализированных гостей Xen. Извините, что был небольшим Xen / C центральный, но это - то, где мой опыт, и pv_ops находится в магистрали (скоро также xen-0 операция в секунду) :)

Хороший вопрос, btw :)

Править:

Когда я сказал 'осторожный, но благоразумный', я имел в виду один шаг выше консерватора. Если Ваша программа выделяет некоторую структуру задания, что большинство функций нужно, блокирует ее. Если Ваши буферы выделения для чтения огромных файлов не блокируйте их.. и обязательно назовите posix_fadvise (), чтобы позволить ядру знать, что Вы только намереваетесь получить доступ к нему однажды (если это так). Кроме того, обязательно консультируйте ядро по вопросам Вашего использования файлов с отображенной памятью, особенно если они служат для организации параллелизма.

Короче говоря, помогите своему ядру хоста управлять памятью, не позволить критическим выделенным блокам бросаться в грязную подкачку страниц, не предполагать, что Ваша программа более важна, чем что-либо еще путем блокировки всего, что это выделяет :)

Извините за неоднозначность. Лучшая фраза, которую я мог придумать, была 'осторожна, но благоразумна'.

3
ответ дан 2 December 2019 в 22:38
поделиться

Я нашел, что это все о вводе-выводе.

VMs обычно сосут невероятно плохо в IO. Это делает различные вещи намного хуже, чем они были бы на реальном олове.

Свопинг является особенно плохим уничтожителем - он полностью разрушает производительность VM, даже немного, поскольку IO является настолько медленным.

Большинство реализаций имеет большую сумму конкуренции IO между VMs, я не видел тот, который избегает этого или обрабатывает его разумно.

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

4
ответ дан 2 December 2019 в 22:38
поделиться

Мой единственный совет, поддерживают на низком уровне Вашу память и использование IO, если это возможно.

IO в VM является довольно медленным по сравнению с физическим оборудованием. Если можно постараться не делать его, затем избегают его.

1
ответ дан 2 December 2019 в 22:38
поделиться

Вещи, которые являются медленными на реальных аппаратных средствах, еще медленнее, когда система виртуализируется. Это зависит от технологии виртуализации, используемой, насколько медленнее они становятся.

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

Если возможно, притворитесь, что Вы пишете для десятилетнего компьютера. Если Ваше приложение работало бы над настольным ПК 1999 или ноутбуком, оно должно сделать OK.

1
ответ дан 2 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

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