(
env: Env,
runId: string,
messages: { body: BenchmarkJobMessage }[]
)
| 120 | |
| 121 | // Cloudflare Queues caps a single sendBatch at 100 messages. Classifier fan-out |
| 122 | // can exceed that because each classifier case is its own message, so dispatch |
| 123 | // must be sliced. |
| 124 | const QUEUE_SEND_BATCH_LIMIT = 100; |
| 125 | |
| 126 | export function chunkArray<T>(items: readonly T[], size: number): T[][] { |
| 127 | const chunks: T[][] = []; |
| 128 | for (let i = 0; i < items.length; i += size) { |
| 129 | chunks.push(items.slice(i, i + size)); |
| 130 | } |
| 131 | return chunks; |
| 132 | } |
| 133 | |
| 134 | export function computeDeciderShardCount({ |
| 135 | modelCount, |
| 136 | repetitions, |
| 137 | chunkCount, |
| 138 | maxLiveContainers = BENCHMARK_CONTAINER_BUDGET, |
| 139 | }: { |
| 140 | modelCount: number; |
| 141 | repetitions: number; |
| 142 | chunkCount: number; |
no test coverage detected