Manage Raspberry PI GPU Memory Split
As you know, Raspberry PI is, before all, a single board computer. This means that available memory is shared between CPU (Central Processing Unit) for programs usage and GPU (Graphics Processing Unit) for video processing usage.
Unlike other bigger computer boards, Raspberry PI hasn’t memory slots to increase total available RAM (even if last Raspberry PI 4 models increased up to 8GB, matching heavier tasks needs). Furthermore, the amount of memory assigned to GPU is subtracted to CPU and you can’t dynamically reassign it until re-set its quantity and reboot.
For this reason, you could need to tune your RAM needs and test and re-test until you ind the right compromise.
In this tutorial I’m going to show you how to manage Raspberry PI Memory Split and set RAM amount assigned to GPU. This tutorial applies to all Raspberry PI boards.
Memory Split Settings: PROs and CONs
RAM amout is one of most precious resources for every OS. You have to set it carefully, because a too low amount to CPU can give system instability and slowness, forcing it to use swap memory (SD storage portion used to help RAM) too often. On the other side, a too low amount of RAM to GPU will result in desktop environments unusable with frustrating lackness.
Back to Raspberry PI, memory allocated to GPU can be set from 16MB upward.
- GPU to 16MB – is a good solution for operating systems without desktop environments (Raspberry PI OS Lite). In this case you don’t need graphical features because you only use terminal console. It gives quite all RAM to programs which will run at full of their capability.
- GPU to 64MB – is, in my opinion, the minimum amount of GPU RAM for light desktop environments (like Raspberry PI OS Desktop) when your need is only for email check and web pages browsing (excluding videos). This can be considered the starting base for desktop installations.
- GPU to 128MB – is a good compromise when using light desktop environments with some office apps for light documents. With this configuration you can also start seeing decent videos
- GPU to 256MS – is for more complex Desktop environments (check, for example, available Raspberry PI OSs). But this amount could start interfering with CPU RAM, so impacting programs performances.
Please share your opinions on GPU Split Memory settings in comments section at the end of this post.
What We Need
This is more a settings tutorial than a project. You will probably already own:
- Raspberry PI (including proper power supply or using a smartphone micro usb charger with at least 3A)
- high speed micro SD card (at least 16 GB, at least class 10)
- USB/wireless keyboard
- micro HDMI cable or HDMI cable or mini HDMI cable (check your Raspberry PI HDMI port in Comparing main features of latest RPI models)
Check hardware prices with following links:
Step-by-Step Procedure
Once installed your favourite Operating system (Raspberry PI OS Lite or Raspberry PI OS Desktop), please remember always to update. From terminal:
sudo apt update -y && sudo apt upgrade -y
We’ll use the Raspberry PI OS built-in raspi-config tool to reach immediately Memory Split settings. From terminal:
sudo raspi-config
In following screen select option 4 (Performance Options) and press ENTER:

In next screen, please select option P2 (GPU Memory) and press ENTER:

In next screen you can write the amount of RAM (in MB) assigned to GPU. Press ENTER after writing related number:

After this, your screen goes back to raspi-config home. Go to “Finish” with TAB key on keyboard and press ENTER:

You are now warned that a reboot is required. Remeber to save documents open, if there are, and select yes to reboot:

On system reboot you can check Memory Split setting by using following terminal command:
cat /boot/config.txt | grep gpu_mem
Enjoy!
WOW – November 2020 and this is already out of date. My revision is the same as yours in raspi-config, but 6 is Advanced Options and no 7. (odd 6 then 8) And under 6 it is now A3=GL Driver “experimental desktop GL driver”
I have no gpu_mem in my boot config
Thank you for notifying me, Jim. I’ve updated post images and references. In latest raspi-config version it has been moved under Performance Options > GPU Memory