tech:memoire_linux
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tech:memoire_linux [2025/10/23 18:24] – Jean-Baptiste | tech:memoire_linux [2026/07/20 09:54] (Version actuelle) – Jean-Baptiste | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # Mémoire Linux | ||
| + | |||
| + | Voir : | ||
| + | * [[Supervision - sonde Nagios - Memoire Linux]] | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * / | ||
| + | * procmap | ||
| + | * pmap | ||
| + | * lsmem / chmem | ||
| + | * https:// | ||
| + | * slabtop | ||
| + | * memstrack | ||
| + | * smem - memory reporting tool | ||
| + | * smemcap - data collection tool for memory reporting | ||
| + | * smemstat - memory usage monitoring tool | ||
| + | |||
| + | |||
| + | |||
| + | ## Fuite mémoire | ||
| + | |||
| + | Voir : | ||
| + | * Valgrind | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * [Atop - Case study with atop: memory leakage](https:// | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ## Config | ||
| + | |||
| + | ### Kernel Linux param | ||
| + | |||
| + | #### NUMA (Non-Uniform Memory Access) | ||
| + | |||
| + | Voir : | ||
| + | * [What is NUMA ? | ||
| + | * [La mémoire : numactl, lstopo, perf, etc.](https:// | ||
| + | * '' | ||
| + | |||
| + | Disable NUMA (Pour Oracle DB) | ||
| + | / | ||
| + | ~~~ini | ||
| + | numa=off | ||
| + | ~~~ | ||
| + | |||
| + | Vérif | ||
| + | |||
| + | '' | ||
| + | |||
| + | ~~~ | ||
| + | # 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 '' | ||
| + | |||
| + | If the number of available nodes is '' | ||
| + | |||
| + | 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 / | ||
| + | ~~~ | ||
| + | |||
| + | To identify memory allocation and use on a particular NUMA node: | ||
| + | ~~~bash | ||
| + | cat / | ||
| + | ~~~ | ||
| + | |||
| + | To identify NUMA node mapping to cores, use one of the following | ||
| + | ~~~bash | ||
| + | numactl --hardware | ||
| + | cat / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Driver Loading - NUMA Node | ||
| + | |||
| + | ~~~bash | ||
| + | numactl --cpunodebind=1 onload_tool reload | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | ### Memory usage per user | ||
| + | |||
| + | ~~~bash | ||
| + | smem -u | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Transparent HugePages (THP) | ||
| + | |||
| + | Voir | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | #### Désactiver **Transparent HugePages (THP)** | ||
| + | |||
| + | ~~~bash | ||
| + | cat / | ||
| + | ~~~ | ||
| + | |||
| + | 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 | ||
| + | |||
| + | ~~~ | ||
| + | $ ./ | ||
| + | ... | ||
| + | --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 " | ||
| + | ps -e -o pid, | ||
| + | ps -e -o pid, | ||
| + | ps -u $USER -o comm, | ||
| + | ps -eo comm, | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | read CommitLimit Committed_AS <<< | ||
| + | echo $(( Committed_AS * 100 / CommitLimit)) | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | memused=$(free | ||
| + | memtotal=$(free | grep ^Mem | awk ' | ||
| + | echo $(( memused * 100 / memtotal)) | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | memFree=$(free | grep ^- | awk ' | ||
| + | memTot=$(free | grep ^Mem | awk ' | ||
| + | memUsed=$(echo " | ||
| + | echo " | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ~~~bash | ||
| + | ps -C apache2 -o rss --no-headers | tr " | ||
| + | read CommitLimit Committed_AS <<< | ||
| + | echo $(( Committed_AS * 100 / CommitLimit)) | ||
| + | memused=$(free | ||
| + | memtotal=$(free | grep ^Mem | awk ' | ||
| + | echo $(( memused * 100 / memtotal)) | ||
| + | ps -e -o pid, | ||
| + | ~~~ | ||
| + | |||
| + | ~~~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 / | ||
| + | MemTotal: | ||
| + | |||
| + | # awk '/ | ||
| + | 65391036 | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ## Fonctionnement | ||
| + | |||
| + | Voir : | ||
| + | OOM Killer et Overcommit Memory | ||
| + | http:// | ||
| + | |||
| + | ## Autres | ||
| + | |||
| + | Clearing KernelCare Cache | ||
| + | |||
| + | Source : https:// | ||
| + | |||
| + | ~~~bash | ||
| + | rm -rf / | ||
| + | echo 1 > / | ||
| + | echo 3 > / | ||
| + | kcarectl –update | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
