---
title: "Calculate recommended RAM and ARC sizing for a ZFS storage pool based on workload type, pool size, deduplication status, and L2ARC cache size. Computes minimum and recommended RAM in gigabytes, ARC target size, and dedup table overhead. Accounts for workload-specific IO patterns: NAS (sequential, 1GB/TB), database (random, 2GB/TB), virtualization (mixed, 1.5GB/TB). Deduplication adds approximately 5GB per TB for the DDT. L2ARC index requires 1GB RAM per 10GB of L2ARC. Essential for TrueNAS, FreeNAS, and custom ZFS server builds."
method: POST
path: "/api/zfs_ram"
tags: ["homelab"]
---

# Calculate recommended RAM and ARC sizing for a ZFS storage pool based on workload type, pool size, deduplication status, and L2ARC cache size. Computes minimum and recommended RAM in gigabytes, ARC target size, and dedup table overhead. Accounts for workload-specific IO patterns: NAS (sequential, 1GB/TB), database (random, 2GB/TB), virtualization (mixed, 1.5GB/TB). Deduplication adds approximately 5GB per TB for the DDT. L2ARC index requires 1GB RAM per 10GB of L2ARC. Essential for TrueNAS, FreeNAS, and custom ZFS server builds.

`POST /api/zfs_ram`

## Request

- Base URL: `https://calc.engineer`
- URL: `https://calc.engineer/api/zfs_ram`
- Auth: none declared

## Request body

- object
  - `pool_size_tb` number, required: Total usable pool size in terabytes
  - `workload` 'general' | 'nas' | 'database' | 'virtualization': Primary workload type: general (mixed), nas (sequential reads/writes), database (random IO), virtualization (mixed random)
  - `dedup_enabled` boolean: Whether ZFS deduplication is enabled (significantly increases RAM requirements)
  - `l2arc_size_gb` number: Size of L2ARC (read cache SSD) in gigabytes; requires additional RAM for index

## Response `200`

Computed result for zfs_ram

- object
  - `result` object, required
    - `min_ram_gb` number, required: Minimum recommended RAM in gigabytes for stable operation
    - `recommended_ram_gb` number, required: Recommended RAM in gigabytes for optimal performance (2x minimum)
    - `arc_target_gb` number, required: Target ARC (Adaptive Replacement Cache) size in gigabytes
    - `dedup_table_gb` number, required: Estimated dedup table (DDT) RAM requirement in gigabytes
    - `notes` string, required: Human-readable sizing rationale and recommendations
  - `tool` string, required
  - `version` string, required
  - `computed_at` string, date-time, required
  - `chain` object, required
    - `feeds` unknown[]
      - unknown
    - `accepts_from` unknown[]
      - unknown

## Other responses

- `400`: Validation error or invalid JSON
- `404`: Tool not found

---

[API](https://skmtc.dev/calc/apis/calc-engineer-api.md) · [All operations](https://skmtc.dev/calc/apis/calc-engineer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/calc/apis/calc-engineer-api/revisions/8830480ec488?raw)
