К тренажеру
ВопросEasybackend-system-calculationsEasyOffer

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.