Throughput OCR-сервиса по CPU и RAM
OCR API обрабатывает один документ за 2 секунды, на время обработки занимает 1 CPU core и 3.5-4 GB RAM. На сервере 20 cores и 64 GB RAM. Как посчитать safe throughput?
Короткий ответ
CPU дает максимум 20 одновременных документов, RAM в worst case дает floor(64 / 4) = 16. Safe concurrency равна 16, throughput = 16 / 2 = 8 документов в секунду.
Полный разбор
Сначала надо разделить concurrency и throughput. Один документ держит один CPU core и до 4 GB RAM на все время обработки. CPU разрешает держать одновременно 20 документов, но память разрешает только floor(64 / 4) = 16 документов в worst case.
Значит, реальный safe bottleneck - RAM. При concurrency 16 и времени обработки 2 секунды throughput равен 16 / 2 = 8 документов в секунду.
Если брать optimistic estimate 3.5 GB на документ, память дала бы floor(64 / 3.5) = 18 документов и 9 документов в секунду. Но для safe ответа на собеседовании лучше брать worst-case потребление 4 GB.
Теория
Throughput для fixed processing time считается как допустимый concurrency, деленный на latency одной обработки. Concurrency ограничивается самым узким ресурсом.
Типичные ошибки
- Считать только CPU и отвечать 10 документов в секунду.
- Умножать CPU на RAM или смешивать GB и секунды в одной формуле.
- Брать optimistic memory estimate, когда интервьюер просит safe throughput.
Как отвечать на собеседовании
- Сначала назови два bottleneck: CPU и RAM.
- Покажи оба лимита и явно выбери minimum.