Local Ollama GPU Performance Consolidation

Captured 2026-09-10T06:22:31.530890+00:00. Hardware: RTX 3080 Ti (12 GB) + GTX 1080 Ti (11 GB), NVIDIA driver 580.178.04, PHB topology without NVLink.

Scope. All retained local benchmark JSON artifacts plus completed session measurements from the RTX 3080 Ti + GTX 1080 Ti evaluation. The companion JSON preserves full raw source artifacts and provenance hashes. Baseline snapshot: Included.

Why these tests were run

StageWhyWhat was testedDecision supported
1. Hardware and topology discoveryThe RTX 3080 Ti and GTX 1080 Ti have different generations, capacities, and no NVLink; a single-model split could therefore be slower than independent workers.NVIDIA visibility, VRAM, driver state, and independent vs split Qwen3 8B placement.Use GPU 0 for latency-sensitive Qwen work. Treat GPU 1 as independent capacity, not automatically pooled VRAM.
2. Qwen3 8B production baselineQwen3 8B is the existing archive model, so its direct 8k and 40k behavior set the production routing baseline.GPU 0 alone, GPU 1 alone, independent concurrent requests, and a 40k two-GPU split.Independent requests increased aggregate throughput; a 40k split was substantially slower. Qwen3 8B also cannot meet Hermes 64k context because it caps at 40,960 tokens.
3. Large-model candidate comparisonLaguna XS Q4 and Qwen3-Coder 30B were candidates for a 64k Hermes session.Both-GPU 8k/40k throughput, then RTX-only host-RAM-mapped baselines and both-GPU measurements at 8k, 40k, and 64k.Laguna was fastest at 64k; Qwen3-Coder remained viable when coding specialization matters. The RTX-only baseline proved the tradeoff between freeing GPU 1 and generation speed.
4. Multi-GPU placement and KV-cache experimentsThe question was whether Ollama automatically prioritizes the faster RTX 3080 Ti as context grows.Automatic layer placement, a manual 3:2 RTX-favoring tensor split, F16/F16 versus Q8/Q8 KV cache, and an incomplete K=Q8/V=F16 run.Ollama auto-placement primarily fit weights and KV cache; it did not preferentially place more frequently used layers on the RTX. Manual 3:2 splits OOMed. Q8/Q8 improved ingestion but reduced generation; the mixed test is deliberately recorded as incomplete.
5. Locally installed Qwen3.8 27B evaluationThe already-downloaded local Qwen candidate needed evidence before considering further downloads.Qwen3.8:latest at 8k, 40k, and 64k across both GPUs.It accepted 64k but generation degraded from 21.4 tok/s at 8k to 1.74 tok/s at 64k, so it is not the practical 64k Hermes choice on this hardware.
6. Conservative production restorationThe user requested more archive work but correctly questioned whether a 50% increase was justified by the uneven GPU performance.A dedicated local GPU 1 Ollama service and disjoint email-worker partitions, followed by a scheduled successful GPU 1 batch and a short throughput sample.Use an 80% GPU 0 / 20% GPU 1 shard split, not a 50% work claim. The first 8.4-minute parallel sample was faster but remains preliminary; the immutable baseline snapshot supports a later comparison.

Interpretation limits

Validated findings

Benchmark measurements

ModelContextLayoutKV cachePrompt tok/sGeneration tok/sWall sEvidence
laguna-xs-2.1:q4_K_M8kRTX 3080 Ti only; host-RAM mappedF16/F16 default314.250.371.7recorded isolated-layout artifact
laguna-xs-2.1:q4_K_M8kUnspecifiedF16/F16 default1,850.897.531.5recorded benchmark artifact
laguna-xs-2.1:q4_K_M40kRTX 3080 Ti only; host-RAM mappedF16/F16 default478.745.390.8recorded isolated-layout artifact
laguna-xs-2.1:q4_K_M40kUnspecifiedF16/F16 default874.762.160.4recorded benchmark artifact
laguna-xs-2.1:q4_K_M64kBoth GPUsF16/F16 default629.848.5—session-measured result preserved in report
laguna-xs-2.1:q4_K_M64kBoth GPUsQ8/Q8760.045.392.9recorded isolated-layout artifact
laguna-xs-2.1:q4_K_M64kRTX 3080 Ti only; host-RAM mappedF16/F16 default448.441.1136.6recorded isolated-layout artifact
qwen3-coder:30b8kUnspecifiedF16/F16 default1,742.166.357.6recorded benchmark artifact
qwen3-coder:30b40kUnspecifiedF16/F16 default449.742.3104.6recorded benchmark artifact
qwen3-coder:30b64kBoth GPUsF16/F16 default364.123.1186.7recorded isolated-layout artifact
qwen3-coder:30b64kBoth GPUsQ8/Q8364.123.1—session-measured result preserved in report
qwen3.8:latest8kBoth GPUsF16/F16 default405.721.442.6recorded isolated-layout artifact
qwen3.8:latest40kBoth GPUsF16/F16 default265.14.0195.0recorded isolated-layout artifact
qwen3.8:latest64kBoth GPUsF16/F16 default214.21.7357.3recorded isolated-layout artifact
qwen3:8b8kGTX 1080 Ti onlyF16/F16 default726.542.216.3recorded benchmark artifact
qwen3:8b8kGTX 1080 Ti onlyF16/F16 default722.942.116.5recorded benchmark artifact
qwen3:8b8kRTX 3080 Ti onlyF16/F16 default4,412.7110.75.9recorded benchmark artifact
qwen3:8b8kRTX 3080 Ti onlyF16/F16 default4,417.7109.66.1recorded benchmark artifact
qwen3:8b40kBoth GPUsF16/F16 default683.139.863.2recorded benchmark artifact
qwen3:8b40kRTX 3080 Ti onlyF16/F16 default2,629.768.119.2recorded benchmark artifact
qwen3:8b64kRTX 3080 Ti only; host-RAM mappedF16/F16 default3,361.085.513.7recorded isolated-layout artifact

Actual long-context acceptance

ModelResult
qwen3:8bRequested 64k was capped at 40,960 tokens.
laguna-xs-2.1:q4_K_MAccepted a real 57,043-token prompt at requested 65,536 context.
qwen3-coder:30bAccepted a real 57,009-token prompt at requested 65,536 context.
qwen3.8:latestAccepted a real 57,012-token prompt at requested 65,536 context.

Current conservative batch configuration

Qwen3 8B email analysis uses an 8k context: GPU 0 owns shards 0–3 of 5, and GPU 1 owns shard 4. The split is disjoint and intended to reduce end-to-end completion time conservatively rather than force a 50% throughput claim.

Provenance

The complete machine-readable report is /home/ai/files/google-lewismoten/meta/performance-reports/20260910-local-ollama-gpu-performance-consolidated.json. The following retained source files were embedded into that JSON:

ArtifactSHA-256
gpu_ollama_benchmark_results.jsonf064f9c10a54cf4e2399d6a175d1230fcb71e4595f174191a8695bf35dc576d8
laguna-xs-2.1_q4_K_M_gpu_benchmark_results.json23ef43a6af819a95da353c22709c71315d7cfaf76a868061d75e0d749e3d45a0
qwen3-coder_30b_gpu_benchmark_results.jsonbe973e2777126af991a1974bb5a79d97825f94d7d406864db7c98929444f719c
laguna-xs-2.1_q4_K_M_gpu0_only_8k_one.jsonffb489a06f650c3d666b63aee13bf25f9b2589d4074825b03de4ece4450ac541
laguna-xs-2.1_q4_K_M_gpu0_only_40k_one.json7c0cb775a5078c7c4c46da60414c56f08697ef9c9772d2250de88d35069beb0f
laguna-xs-2.1_q4_K_M_gpu0_only_64k_one.json3c43c7c631d86fbec777eae9f91b889a646ca62f46b8328ca23221e313457b99
laguna-xs-2.1_q4_K_M_both_gpus_64k_one.jsond159bf5c6364857c661271d295df7f0776a3e181e1286ffe3f5435a0f7a28bb1
qwen3-coder_30b_both_gpus_64k_one.json610a45267596dabcf8bb54f2b53d38554313a98ebdb52512b13ab70f6a19877f
qwen3_8b_gpu0_only_64k_one.json893a599e3466575ed636ac4143ee191087552707bd12acd0c3458a4b5cedbd2d
qwen3.8_latest_both_gpus_8k_k-f16_v-f16_one.jsonc53bab6b78589efcd823520868a55a9a132d57939f354c18436ab695084c9db7
qwen3.8_latest_both_gpus_40k_k-f16_v-f16_one.json22d60c767c745a957d13f0db24a7dfd9a1875d2f19bd1faa8cdd05ba4a5f17ee
qwen3.8_latest_both_gpus_64k_k-f16_v-f16_one.jsond05cf396a1423fd791942e2c774daf1ea8633fd43e275dbe461d1746cdba46f5

Incomplete or failed experiments