RAM-диски в GCP Dataflow — возможно ли это?
Google Compute Engine поддерживает RAM-диски — см . здесь .
Я разрабатываю проект, который будет повторно использовать существующий код, управляющий локальными файлами.
Для масштабируемости я собираюсь использовать Dataflow.
Файлы находятся в GCS, и я отправлю их работникам Dataflow для обработки.
Я думал о повышении производительности, используя RAM-диски на рабочих местах, копировать файлы из GCS прямо на RAM-диск и манипулировать ими там.
Я не могу найти ни одного примера такой возможности.
Является ли это допустимым решением, или мне следует избегать такого «трюка»?
2 ответа
Невозможно использовать виртуальный диск в качестве типа диска для рабочих процессов, поскольку виртуальный диск настраивается на уровне ОС. Единственными доступными дисками для рабочих процессов являются постоянные диски Standard (pd-standard) и постоянные диски SSD (pd-ssd). Среди них SSD определенно быстрее. Вы можете попробовать добавить больше рабочих процессов или использовать более быстрый процессор для более быстрой обработки данных.
Для сравнения я попробовал запустить задание, использующее стандартный и ssd, и оказалось, что оно на 13% быстрее при использовании SSD по сравнению со стандартным диском. Но обратите внимание, что я только что протестировал быстрый старт из документации по потоку данных .
Использование SSD (прошло 3 м 54 с):
Использование стандартного диска (прошедшее время 4 м 29 с):
Хотя то, что вы хотите сделать, может быть технически возможно, создав
setup.py
с пользовательскими командами это не поможет вам повысить производительность. Beam уже использует столько рабочей оперативной памяти, сколько может, чтобы работать эффективно. Если вы читаете файл из GCS и работаете с ним, то этот файл уже будет загружен в оперативную память. Выделив большую часть оперативной памяти на виртуальный диск, вы, вероятно, заставите Beam работать медленнее, а не быстрее.
Если вы просто хотите, чтобы что-то происходило быстрее, попробуйте использовать SSD, увеличьте количество рабочих процессов или попробуйте использовать
c2
семейство машин.