> On Mar 13, 2023, at 10:37 AM, Joe Conway <m...@joeconway.com> wrote:
> 
> On 3/13/23 13:55, Israel Brewster wrote:
>> 1) They reference a “Memory cgroup out of memory”, which refers back
>> to the opening comment on Joe Conway’s message - this would imply to
>> me that I *AM* running with a cgroup memory.limit set. Not sure how
>> that changes things?
> 
> cgroup memory limit is enforced regardless of the actual host level memory 
> pressure. As an example, if your host VM has 128 GB of memory, but your 
> cgroup memory limit is 512MB, you will get an OOM kill when the sum memory 
> usage of all of your postgres processes (and anything else sharing the same 
> cgroup) exceeds 512 MB, even if the host VM has nothing else going on 
> consuming memory.
> 
> You can check if a memory is set by reading the corresponding virtual file, 
> e.g:
> 
> 8<-------------------
> # cat 
> /sys/fs/cgroup/memory/system.slice/postgresql.service/memory.limit_in_bytes
> 9223372036854710272
> 8<-------------------
> 
> A few notes:
> 1/ The specific path to memory.limit_in_bytes might vary, but this example is 
> the default for the RHEL 8 postgresql 10 RPM.

Not finding that file specifically (this is probably too much info, but…):

root@novarupta:~# ls /sys/fs/cgroup/system.slice/                               
    
 -.mount                   cgroup.threads          dev-hugepages.mount      
memory.events.local   memory.swap.events            proc-diskstats.mount        
           ssh.service                           system-postgresql.slice        
   systemd-resolved.service
 accounts-daemon.service   cgroup.type             dev-lxc-console.mount    
memory.high           memory.swap.high              proc-loadavg.mount          
           sys-devices-system-cpu-online.mount   systemd-initctl.socket         
   systemd-sysctl.service
 cgroup.controllers        console-getty.service   dev-lxc-tty1.mount       
memory.low            memory.swap.max               proc-meminfo.mount          
           sys-devices-virtual-net.mount         systemd-journal-flush.service  
   systemd-sysusers.service
 cgroup.events             console-setup.service   dev-lxc-tty2.mount       
memory.max            networkd-dispatcher.service   proc-stat.mount             
           sys-fs-fuse-connections.mount         systemd-journald-audit.socket  
   systemd-tmpfiles-setup-dev.service
 cgroup.freeze             cpu.pressure            dev-mqueue.mount         
memory.min            pids.current                  proc-swaps.mount            
           sys-kernel-debug.mount                
systemd-journald-dev-log.socket   systemd-tmpfiles-setup.service
 cgroup.max.depth          cpu.stat                dev-ptmx.mount           
memory.numa_stat      pids.events                   
proc-sys-kernel-random-boot_id.mount   syslog.socket                         
systemd-journald.service          systemd-update-utmp.service
 cgroup.max.descendants    cron.service            io.pressure              
memory.oom.group      pids.max                      proc-sys-net.mount          
           sysstat.service                       systemd-journald.socket        
   systemd-user-sessions.service
 cgroup.procs              data.mount              keyboard-setup.service   
memory.pressure       pool.mount                   
'proc-sysrq\x2dtrigger.mount'          'system-container\x2dgetty.slice'      
systemd-logind.service            ufw.service
 cgroup.stat               dbus.service            memory.current           
memory.stat           postfix.service               proc-uptime.mount           
           system-modprobe.slice                 systemd-networkd.service       
   uuidd.socket
 cgroup.subtree_control    dbus.socket             memory.events            
memory.swap.current   proc-cpuinfo.mount            rsyslog.service             
           system-postfix.slice                  systemd-remount-fs.service

root@novarupta:~# ls /sys/fs/cgroup/system.slice/system-postgresql.slice/
cgroup.controllers  cgroup.max.depth        cgroup.stat             cgroup.type 
  io.pressure     memory.events.local  memory.max        memory.oom.group  
memory.swap.current  memory.swap.max  pids.max
cgroup.events       cgroup.max.descendants  cgroup.subtree_control  
cpu.pressure  memory.current  memory.high          memory.min        
memory.pressure   memory.swap.events   pids.current     
postgresql@13-main.service
cgroup.freeze       cgroup.procs            cgroup.threads          cpu.stat    
  memory.events   memory.low           memory.numa_stat  memory.stat       
memory.swap.high     pids.events

root@novarupta:~# ls 
/sys/fs/cgroup/system.slice/system-postgresql.slice/postgresql@13-main.service/
cgroup.controllers  cgroup.max.depth        cgroup.stat             cgroup.type 
  io.pressure     memory.events.local  memory.max        memory.oom.group  
memory.swap.current  memory.swap.max  pids.max
cgroup.events       cgroup.max.descendants  cgroup.subtree_control  
cpu.pressure  memory.current  memory.high          memory.min        
memory.pressure   memory.swap.events   pids.current
cgroup.freeze       cgroup.procs            cgroup.threads          cpu.stat    
  memory.events   memory.low           memory.numa_stat  memory.stat       
memory.swap.high     pids.events

> 
> 2/ The value above, 9223372036854710272 basically means "no limit" has been 
> set.
> 
> 3/ The example assumes cgroup v1. There are very few distro's that enable 
> cgroup v2 by default, and generally I have not seen much cgroup v2 usage in 
> the wild (although I strongly recommend it), but if you are using cgroup v2 
> the names have changed. You can check by doing:
> 
> 8<--cgroupv2 enabled-----------------
> # stat -fc %T /sys/fs/cgroup/
> cgroup2fs
> 8<--cgroupv1 enabled-----------------
> # stat -fc %T /sys/fs/cgroup/
> tmpfs
> 8<-------------------

Looks like V2:

root@novarupta:~# stat -fc %T /sys/fs/cgroup/
cgroup2fs
root@novarupta:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
Codename:       focal

---
Israel Brewster
Software Engineer
Alaska Volcano Observatory 
Geophysical Institute - UAF 
2156 Koyukuk Drive 
Fairbanks AK 99775-7320
Work: 907-474-5172
cell:  907-328-9145

> 
>> 2) All the entries contain the line "oom_score_adj:0”, which would
>> seem to imply that the postmaster, with its -900 score is not being
>> directly targeted by the OOM killer.
> 
> Sounds correct
> 
> -- 
> Joe Conway
> PostgreSQL Contributors Team
> RDS Open Source Databases
> Amazon Web Services: https://aws.amazon.com
> 



Reply via email to