The RAM memory layout of the ConnectCore 8M Nano is designed to allow all system features to work out of the box. However, some limitations occur when the amount of RAM memory is small.

There are different variants of the ConnectCore 8M Nano with different RAM memory populations.

Reserved RAM memory

The ConnectCore 8M Nano device tree defines reserved memory regions in the reserved-memory node. Reserving these regions reduces the total amount of free memory in the system.

Contiguous memory allocator (CMA)

Processes that require long, contiguous zones of memory, such as GPU and video playback, use the CMA region. CMA size is determined dynamically via a lookup table in the digi,size-table device tree property:

ConnectCore 8M Nano device tree
/ {
	...

	reserved-memory {
		linux,cma {
			digi,size-table = <
				/* RAM         CMA*/
				0 0x20000000 0 0x6000000	/* 512 MB variants -> 96 MB of CMA */
				0 0x40000000 0 0x14000000	/* 1 GB variants   -> 320 MB of CMA */
			>;
		};
	};

	...
};

The chosen values in these tables ensure that all components have sufficient memory when total memory is limited. In a production scenario, it is likely that not all features will be used, so you may need to customize these values for your specific use case.

Examples

The following examples describe scenarios that may require you to reallocate or adjust memory.

If your specific use case is a mix of two or more examples (for example, video playback plus an application requiring a large memory footprint), adjust the memory levels until you find an acceptable balance.

High-definition video playback

High-definition video playback requires a large amount of CMA memory. You must either increase the total CMA region size, reduce the GPU section, or use some combination of both.

Graphical application

To make graphical applications run as smoothly as possible, increase the size of the CMA memory section reserved for the GPU. If this is still not enough, increase the total CMA to make the GPU section larger.

Application with large memory footprint

Applications that require a large amount of memory may be limited by other running processes and reserved memory regions. To make sure an application with a large memory footprint runs optimally, reduce the size of the CMA region (or any other reserved region). Digi recommends you also reduce the CMA memory section reserved for the GPU to avoid possible errors. Another option is to remove unnecessary packages from the file system. For example, the XWayland desktop backend consumes a lot of memory, so if a desktop environment is not essential you can use non-graphical images instead.

Possible effects when memory is low

  • Having large reserved regions and not a lot of space for normal userspace processes can cause services like NetworkManager to crash. This reduces application performance, and the oom_reaper may terminate applications suddenly.

  • Insufficient free CMA space will result in video playback issues. 64 MB of free space is enough to play videos up to 720p. For higher-definition videos, use the following recommended values:

    • To play 1080p videos, allocate at least 192 MB.

    • To play 4K videos, allocate at least 384 MB.

  • Having a small CMA memory section reserved for the GPU will result in slightly decreased performance of graphical applications.