Outils pour utilisateurs

Outils du site


tech:memoire_linux

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tech:memoire_linux [2025/03/25 12:18] Jean-Baptistetech:memoire_linux [2026/07/20 09:54] (Version actuelle) Jean-Baptiste
Ligne 1: Ligne 1:
 +<!DOCTYPE markdown>
 +{{tag>Mem SNMP}}
 +
 +# Mémoire Linux
 +
 +Voir :
 +* [[Supervision - sonde Nagios - Memoire Linux]]
 +* https://linuxblog.io/free-vs-available-memory-in-linux/
 +* https://en.pingcap.com/blog/linux-kernel-vs-memory-fragmentation-2/
 +* /proc/sys/vm/compact_memory 
 +* procmap
 +* pmap
 +* lsmem / chmem
 +* https://linuxfr.org/news/sortie-du-noyau-linux-6-17 damon_stat
 +* slabtop
 +* memstrack
 +* smem - memory reporting tool
 +* smemcap - data collection tool for memory reporting
 +* smemstat - memory usage monitoring tool
 +
 +
 +
 +## Fuite mémoire
 +
 +Voir : 
 +* Valgrind
 +* https://www.hebergementwebs.com/tutoriels/linux-recherche-de-fuites-de-memoire-dans-les-programmes
 +* https://qastack.fr/unix/36450/how-can-i-find-a-memory-leak-of-a-running-process
 +* https://www.linuxtricks.fr/wiki/performance-memoire-avec-free-et-vmstat
 +* http://www.ordinateur.cc/syst%C3%A8mes/Linux/205699.html
 +* [Atop - Case study with atop: memory leakage](https://www.atoptool.nl/download/case_leakage.pdf)
 +* https://github.com/iovisor/bcc/blob/master/README.md tools/memleak
 +
 +
 +
 +
 +
 +## Config
 +
 +### Kernel Linux param
 +
 +#### NUMA (Non-Uniform Memory Access)
 +
 +Voir :
 + * [What is NUMA ?](https://www.kernel.org/doc/html/v4.19/vm/numa.html)
 + * [La mémoire : numactl, lstopo, perf, etc.](https://www.it-connect.fr/chapitres/la-memoire-numactl-lstopo-perf-etc/)
 + * ''numatop''
 +
 +Disable NUMA (Pour Oracle DB)
 +/usr/share/doc/kernel-doc-4.18.0/Documentation/x86/x86_64/boot-options.txt
 +~~~ini
 +numa=off      Only set up a single NUMA node spanning all memory.
 +~~~
 +
 +Vérif
 +
 +''numactl'' command can be used to check the status of NUMA
 +
 +~~~
 +# numactl -H | grep available
 +available: 8 nodes (0-7)
 +~~~
 +
 +~~~
 +# numactl -H | grep available
 +available: 2 nodes (0-1)
 +~~~
 +
 +If the number of available nodes is ''2 nodes (0-1)'' or ''8 nodes (0-7)'' then NUMA is enabled
 +
 +If the number of available nodes is ''1 nodes (0)'' then NUMA is not enabled.
 +
 +Voir aussi :
 +* numastat
 +* numademo
 +
 +
 +#### NUMA (Non-Uniform Memory Access) - Useful Commands
 +
 +To identify NUMA nodes, socket memory and CPU core allocation
 +~~~bash
 +numactl -H
 +~~~
 +
 +To identify the NUMA node local to an adapter
 +~~~bash
 +cat /sys/class/net/<interface>/device/numa_node
 +~~~
 +
 +To identify memory allocation and use on a particular NUMA node:
 +~~~bash
 +cat /sys/devices/system/node/node<N>/numastat
 +~~~
 +
 +To identify NUMA node mapping to cores, use one of the following
 +~~~bash
 +numactl --hardware
 +cat /sys/devices/system/node/node<N>/cpulist
 +~~~
 +
 +
 +Driver Loading - NUMA Node
 +
 +~~~bash
 +numactl --cpunodebind=1 onload_tool reload
 +~~~
 +
 +
 +
 +### Memory usage per user
 +
 +~~~bash
 +smem -u
 +~~~
 +
 +
 +### Transparent HugePages (THP)
 +
 +Voir
 +* https://blog.zwindler.fr/2020/02/24/transparent-hugepages-mesurer-limpact-sur-les-performances/
 +* https://www.postgresql.org/docs/9.4/kernel-resources.html
 +
 +
 +#### Désactiver **Transparent HugePages (THP)**
 +
 +~~~bash
 +cat /sys/kernel/mm/transparent_hugepage/enabled
 +~~~
 +
 +The following is a sample output that shows Transparent HugePages are being used as the [always] flag is enabled.
 +~~~
 +[always] never
 +~~~
 +
 +Paramètre Kernel Linux
 +~~~ini
 +transparent_hugepage=never
 +~~~
 +
 +
 +
 +
 +
 +
 +
 +
 +## Notes Free / Aviable
 +
 +~~~
 +$ ./centreon_plugins.pl --plugin os::linux::snmp::plugin --mode memory --hostname localhost --help
 +...
 +    --patch-redhat
 +            If using Red Hat distribution with net-snmp >= 5.7.2-43 and
 +            net-snmp < 5.7.2-47. But you should update net-snmp!!!!
 +
 +            This version: used = memTotalReal - memAvailReal // free =
 +            memAvailReal
 +
 +            Others versions: used = memTotalReal - memAvailReal - memBuffer
 +            - memCached // free = total - used
 +~~~
 +
 +## Exemple
 +
 +
 +~~~bash
 +free -mt
 +vmstat -SM 45 10
 +vmstat -SM -a 45 10
 +ps -C apache2 -o rss --no-headers | tr "\n" "+" | sed -e 's/+$/\n/' | bc
 +ps -e -o pid,user,%mem,rss,vsize,cmd --sort rss
 +ps -e -o pid,user,%mem,rss,vsize,cmd --sort vsize
 +ps -u $USER -o comm,vsz,pcpu | sort -nrk2
 +ps -eo comm,pcpu,pmem,rss --sort rss | tail -n 30 | tac
 +~~~
 +
 +~~~bash
 +read CommitLimit Committed_AS <<< $(egrep "CommitLimit|Committed_AS" /proc/meminfo | awk '{print $2}')
 +echo $(( Committed_AS * 100 / CommitLimit))
 +~~~
 +
 +~~~bash
 +memused=$(free  | grep "buffers/cache" | awk '{print $3}')
 +memtotal=$(free | grep ^Mem | awk '{print $2}')
 +echo $(( memused * 100 / memtotal))
 +~~~
 +
 +~~~bash
 +memFree=$(free | grep ^- | awk '{print $3}')
 +memTot=$(free | grep ^Mem | awk '{print $2}')
 +memUsed=$(echo "scale=2 ; 100 * $memFree / $memTot" | bc)
 +echo "$memUsed %  Mem used" | grep ^[3-9][0-9]
 +~~~
 +
 +
 +~~~bash
 +ps -C apache2 -o rss --no-headers | tr "\n" "+" | sed -e 's/+$/\n/' | bc
 +read CommitLimit Committed_AS <<< $(egrep "CommitLimit|Committed_AS" /proc/meminfo | awk '{print $2}')
 +echo $(( Committed_AS * 100 / CommitLimit))
 +memused=$(free  | grep "buffers/cache" | awk '{print $3}')
 +memtotal=$(free | grep ^Mem | awk '{print $2}')
 +echo $(( memused * 100 / memtotal))
 +ps -e -o pid,user,rss,vsize,cmd --sort rss
 +~~~
 +
 +~~~bash
 +smem -u
 +smem -u -t -k
 +top -b -n 1 -u apache
 +~~~
 +
 +
 +Taille totale de la mémoire physique de la RAM (sans la swap)
 +~~~
 +# head -1 /proc/meminfo
 +MemTotal:       65391036 kB
 +
 +# awk '/MemTotal/ { print $2 }' /proc/meminfo
 +65391036
 +~~~
 + 
 +
 +
 +
 +
 +
 +
 +## Fonctionnement
 +
 +Voir :
 +OOM Killer et Overcommit Memory
 +http://www.blog.florian-bogey.fr/empecher-les-depassements-de-memoire-sur-un-serveur-linux.html
 +
 +## Autres
 +
 +Clearing KernelCare Cache
 +
 +Source : https://www.linuxjournal.com/content/how-install-and-uninstall-kernelcare
 +
 +~~~bash
 +rm -rf /var/cache/kcare/patches
 +echo 1 > /proc/sys/vm/compact_memory
 +echo 3 > /proc/sys/vm/drop_caches
 +kcarectl –update
 +~~~
 +
 +
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki