Memory (RAM) Inventory
For every managed machine, Athena inventories the physical memory installed in it — broken down per slot so you can see exactly which memory sockets are populated, how much each module holds, its speed and generation (DDR3, DDR4, DDR5…), and the manufacturer and part number of the installed module. Empty sockets are reported too. That gives you a fleet-wide picture of installed RAM — for example which machines are short on memory, which still have free slots to expand into, and which mix module speeds — without opening a case or logging in to each device.
What's collected#
Each memory record represents one physical memory socket on the machine and captures the following:
| Field | Meaning |
|---|---|
| Slot | The socket / bank label as the hardware names it (for example DIMM 0, ChannelA-DIMM0). Lets you tell one socket from another when planning which to populate. |
| Capacity | The size of the module in that socket, shown in a human-readable form (for example 16 GB). Empty sockets show as Empty. |
| Speed | The module's rated speed in MHz. |
| Type | The memory generation — DDR, DDR2, DDR2 FB-DIMM, DDR3, DDR4 or DDR5. When the machine reports a value that doesn't map to a known generation it is shown as Type N, and as Unknown when no value is reported. |
| Manufacturer | The module maker, where the hardware reports it. |
| Part Number | The manufacturer part number of the installed module — useful when sourcing matching modules for an upgrade. |
Empty sockets are reported as rows. A socket with no module installed
appears with its slot label and a capacity of Empty; its speed, type,
manufacturer and part number are shown as -. This is what lets you see at a glance
whether a machine still has room to add memory.
This is read-only discovery. Athena reports what each machine already reports about its installed memory; it does not modify, test, or reconfigure the hardware. The exact fields a given machine can populate depend on what its firmware and drivers expose.
Where to see it#
Open a machine from the Agents list, then in the agent detail view's left-hand navigation choose Memory Slots. The section lists every socket in a table with its capacity, speed, type, manufacturer and part number, so a machine that is fully populated stands apart from one with sockets still free.
As with the rest of inventory, the values reflect the machine's last successful collection on its regular reporting cadence rather than a live query at open time. For the wider inventory surface and refresh behaviour, see Inventory.
Platform coverage#
Memory is inventoried on both Windows and Linux endpoints, using each operating system's own native facilities, so a mixed fleet answers the same questions consistently.
| Aspect | Windows | Linux |
|---|---|---|
| Per-slot detail (slot, capacity, speed, type, manufacturer, part number) | Reported. | Reported where the machine exposes the underlying firmware (SMBIOS) memory records. |
| Empty-slot detection | Reported. | Reported when per-slot firmware detail is available. |
| Fallback | — | Where per-slot firmware detail is unavailable (for example inside a container, or where the reading needs privileges the agent doesn't have), Linux reports a single System Memory row with the total installed size and a type of Unknown, so the section is never blank. |
If a Linux machine shows a single System Memory row instead of per-slot detail,
that machine couldn't provide the per-module firmware data — commonly the case in virtualized
or containerized environments. Physical servers and workstations that expose their firmware
memory tables report the full per-slot breakdown.
Auditing across the fleet#
Per-slot memory fields are a per-machine readout rather than machine-filter fields, so you won't find them in the collection or automatic-tagging field pickers. To answer a fleet-wide question — "which machines still have free memory slots?", "which run DDR3?", or "which need matching modules sourced for an upgrade?" — the practical approaches are:
- Open the machines you care about and read the Memory Slots section directly for a quick, targeted check.
- For total installed memory as a filterable value, note that a machine's overall RAM total is a filter field (surfaced from the hardware inventory), so you can build a collection of, say, machines with less than a given amount of RAM. The per-slot breakdown on this page is the detail behind that total.
- Pull the data over the API and filter or export it with your own tooling.
Reading it over the API#
Memory has its own inventory endpoint. Request the memory slots for one agent and read the returned array:
# Fetch the per-slot memory inventory for one agent
$headers = @{ Authorization = "Bearer $token" }
$mem = Invoke-RestMethod `
-Uri "https://athena.example.com:8443/api/agents/$agentId/inventory/memory" `
-Headers $headers `
-SkipCertificateCheck
# List each socket with its capacity, speed and type
$mem.data |
Select-Object slot, capacityFormatted, speedMhz, memoryType, manufacturer, partNumber
# Count the empty sockets still available for an upgrade
($mem.data | Where-Object { $_.isEmpty }).Count
The same data is also included in an agent's full inventory document
(GET api/agents/{agentId}/inventory) under the memorySlots array.
Reading inventory requires the Helpdesk role or higher. The array is empty (or
the parent inventory is null) when a machine has not yet reported this data. For the
full inventory surface and the PowerShell module used to script against the server, see
Inventory and the
PowerShell Module reference.