I basically followed this article and some other instructions.
First, just whether your device is in the "suspend to RAM" using
cat /sys/power/mem_sleep
If it returns "s2idle [deep]", then it's supported. If it's not. First check whether your device supports this suspend mode, if so, run
echo 'deep' > /sys/power/mem_sleep
and check again.
Now your device has the correct suspend mode, but it doesn't necessarily enter this mode when you suspend. To check, first suspend your device, then wake it up. Then open a terminal and run
sudo journalctl | grep "PM: suspend" | tail -2
You can find the log of your suspension, which is something similar to below. Note that the log I attached shows that I correctly enter the "suspend to RAM" mode, in your case, it may appear "suspend entry (s2idle)" instead of "suspend entry (deep)"
lin@Zephyrus:~$ sudo journalctl | grep "PM: suspend" | tail -2
[sudo] password for lin:
Feb 16 21:35:05 Zephyrus kernel: PM: suspend entry (deep)
Feb 17 09:36:24 Zephyrus kernel: PM: suspend exit
If this is the case, you have to modify your bootloader. Here I use the gedit. Make sure it's installed first by
sudo apt update
sudo apt upgrade
sudo apt install gedit
Then modify the bootloader file
sudo -H gedit /etc/default/grub
Locate the line GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" in the file and replace it with GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mem_sleep_default=deep"
It should work now! Try to suspend and wake up your device and check the log using the command above again!