Memoire HP
De DocUnix.
Sommaire |
Etat de charge de la mémoire
kmeminfo rend le contenu de la mémoire ainsi que son état de charge.
swapinfo donne l'état de charge des swap.
Réglages des parametres systeme pour la mémoire
kmtune|grep -i MAXDSIZ maxdsiz 1073741824 - 1073741824 maxdsiz_64bit 4294967296 - 4294967296
Les parametres principaux des réglages mémoires (via kmtune) sont :
shmem 1 - 1 shmmax 4294967296 Y 4294967296 shmmni 1600 - 1600 shmseg 1024 Y 1024 swapmem_on 1 - 1 maxswapchunks 10000 - 10000
ipcs amélioré
ipcs n'indique que les heures, pas les dates
une version améliorée pour HP-UX :
tusc -v ipcs -ma 2>&1 |
awk 'BEGIN { printf("%5s %9s %-20s %3s %19s %19s %19s\n","UID","SIZE","KEY","NAT","ATIME","DTIME","CTIME") }
/pstat/ { id="x" ; key="x" ; at="x" ; dt="x" ; ct="x" ; na="x" }
/psh_uid/ {id=$2 }
/psh_segsz/ {sz=$2 }
/psh_key/ { key=$2 }
/psh_nattch/ { na=$2 }
/psh_atime/ { at=$0 ; sub(".*time: ","",at) }
/psh_dtime/ { dt=$0 ; sub(".*time: ","",dt) }
/psh_ctime/ { ct=$0 ; sub(".*time: ","",ct) }
/psh_valid/ {printf("%5d %9d %-20s %3d %s %s %s\n",id,sz,key,na,at,dt,ct) | "sort" }'
Trouver quel programme utilise un ipc
Faire un ipcs -ma pour obtenir la liste des ipc sur le serveur.
Ensuite utiliser /usr/contrib/p4/bin/shminfo -s <ID_ipcs> pour obtenir les programmes l'utilisant.
Si shminfo n'est pas installé sur le serveur, il est possible de le récupérer sur
ftp://hprc.external.hp.com/sysadmin/programs/shminfo
( Login as contrib. Password 9unsupp8. )
Pour plus d'information, consulter la page
http://www.hp-eloquence.com/sdb/html/1144250417.html
Programme C memdetail
Ce programme est a compiler avec un cc avec la commande suivante : cc memdetail.c -o memdetail.
Nous avons compilé et testé ce programme en HP-XX 11.11, 11.23 et 11.31 sans rencontrer de difficulté.
Le programme ci-dessous est a recopier sur le serveur dans un fichier nommé memdetail.c:
/*
* memdetail.c
*
* HP-UX 10.20 & 11.00 verified
* Scott Robertson <srobertson@bcbsga.com>
* $Revision: 1.2 $
* $Date: 2001/07/19 11:47:15 $
*
* This program is subject to change without notice.
* No warranty is expressed or implied.
* Your mileage may vary.
*
* Usage: memdetail
*
* Compile: cc memdetail.c -o memdetail
*
*/
static char ident[] = "@(#)memdetail.c $Revision: 1.2 $";
#define KB 1024
#include <sys/param.h>
#include <sys/pstat.h>
#include <unistd.h>
main() {
struct pst_static sbuf;
struct pst_dynamic dbuf;
struct pst_vminfo vbuf;
double page_size, swapmem_on;
double phys_mem, used_phys_mem, avail_mem;
double total_virtual_mem, active_virtual_mem, avail_virtual_mem;
double total_real_mem, active_real_mem, avail_real_mem;
double total_swap_dev, used_swap_dev, avail_swap_dev;
double total_swap_mem, used_swap_mem, avail_swap_mem;
/* get static information about the system */
if (pstat_getstatic(&sbuf, sizeof(sbuf), (size_t)1, 0) != -1)
{
phys_mem = sbuf.physical_memory;
page_size = sbuf.page_size;
}
else
perror("pstat_getstatic()");
/* get dynamic information about the system */
if (pstat_getdynamic(&dbuf, sizeof(dbuf), (size_t)1, 0) != -1)
{
avail_mem = dbuf.psd_free;
total_virtual_mem = dbuf.psd_vm;
active_virtual_mem = dbuf.psd_avm;
total_real_mem = dbuf.psd_rm;
active_real_mem = dbuf.psd_arm;
}
else
perror("pstat_getdynamic()");
/* get VM information about the system */
if (pstat_getvminfo(&vbuf, sizeof(vbuf), (size_t)1, 0) != -1)
{
swapmem_on = vbuf.psv_swapmem_on;
total_swap_dev = vbuf.psv_swapspc_max;
avail_swap_dev = vbuf.psv_swapspc_cnt;
total_swap_mem = vbuf.psv_swapmem_max;
avail_swap_mem = vbuf.psv_swapmem_cnt;
}
else
perror("pstat_getvminfo()");
/* calculate used physical memory */
used_phys_mem = phys_mem - avail_mem;
/* calculate avail virtual memory */
avail_virtual_mem = total_virtual_mem - active_virtual_mem;
/* calculate avail real memory */
avail_real_mem = total_real_mem - active_real_mem;
/* calculate used swap on device */
used_swap_dev = total_swap_dev - avail_swap_dev;
/* calculate used swap on memory */
used_swap_mem = total_swap_mem - avail_swap_mem;
(void)printf("%-15s\t%6s\t%6s\t%6s\t%6s\n",
"Memory Stat","total","used","avail","%used");
(void)printf("%-15s\t%6.1f\t%6.1f\t%6.1f\t%5.0f%%\n",
"physical",
(phys_mem * page_size) / (KB * KB),
(used_phys_mem * page_size) / (KB * KB),
(avail_mem * page_size) / (KB * KB),
used_phys_mem * 100 / phys_mem);
(void)printf("%-15s\t%6.1f\t%6.1f\t%6.1f\t%5.0f%%\n",
"active virtual",
(total_virtual_mem * page_size) / (KB * KB),
(active_virtual_mem * page_size) / (KB * KB),
(avail_virtual_mem * page_size) / (KB * KB),
active_virtual_mem * 100 / total_virtual_mem);
(void)printf("%-15s\t%6.1f\t%6.1f\t%6.1f\t%5.0f%%\n",
"active real",
(total_real_mem * page_size) / (KB * KB),
(active_real_mem * page_size) / (KB * KB),
(avail_real_mem * page_size) / (KB * KB),
active_real_mem * 100 / total_real_mem);
if (swapmem_on)
(void)printf("%-15s\t%6.1f\t%6.1f\t%6.1f\t%5.0f%%\n",
"memory swap",
(total_swap_mem * page_size) / (KB * KB),
(used_swap_mem * page_size) / (KB * KB),
(avail_swap_mem * page_size) / (KB * KB),
used_swap_mem * 100 / total_swap_mem);
(void)printf("%-15s\t%6.1f\t%6.1f\t%6.1f\t%5.0f%%\n",
"device swap",
(total_swap_dev * page_size) / (KB * KB),
(used_swap_dev * page_size) / (KB * KB),
(avail_swap_dev * page_size) / (KB * KB),
used_swap_dev * 100 / total_swap_dev);
}
Personnellement, je préfère utiliser Glance qui est plus détaillé et plus fin. Par contre, la licence est malheureusement payante.
Il existe aussi l'utilitaire kmeminfo qui remontent des informations très pertinentes et fines en terme d'utilisation mémoire : /usr/contrib/bin/kmeminfo
HP-UX 11.31
HP a modifié la gestion des parametres systemes et recommande d'utiliser la procedure décrite dans cette page en anglais : http://wiki-ux.info/wiki/Modify_kernel_using_kconfig_in_HPUX_11i_v3
Il existe aussi l'utilitaire kmeminfo qui remontent des informations très pertinentes et fines en terme d'utilisation mémoire : /usr/contrib/bin/kmeminfo
kmeminfo
Utilitaire HP permettant d'obtenir la repartition de la consommation mémoire sur un serveur : /usr/contrib/bin/kmeminfo
tool: kmeminfo 7.17 - libp4 9.282 - HP CONFIDENTIAL
unix: /stand/current/vmunix 11.31 64bit IA64 on host "my host"
core: /dev/kmem live
link: Sat Oct 02 16:36:09 METDST 2010
boot: Sat Oct 2 20:43:35 2010
time: Wed Feb 9 14:40:41 2011
nbpg: 4096 bytes
----------------------------------------------------------------------
Physical memory usage summary (in page/byte/percent):
Physical memory = 8380695 32.0g 100%
Free memory = 835895 3.2g 10%
User processes = 0 0.0 0% details with -user
System = 396 1.5m 0%
Kernel = 0 0.0 0% kernel text and data
Dynamic Arenas = 1650666 6.3g 20% details with -arena
spinlock_arena = 199274 778.4m 2%
FCACHE_ARENA = 167753 655.3m 2%
misc region are = 160712 627.8m 2%
reg_fixed_arena = 153742 600.6m 2%
vx_inode_kmcach = 137480 537.0m 2%
Other arenas = 831705 3.2g 10% details with -arena
Super page pool = 175247 684.6m 2% details with -kas
Static Tables = 502840 1.9g 6% details with -static
pfdat = 409213 1.6g 5%
vhpt = 65536 256.0m 1%
text = 8811 34.4m 0% vmunix text section
inode = 7616 29.8m 0%
bss = 6645 26.0m 0% vmunix bss section
Other tables = 5017 19.6m 0% details with -static
Buffer cache = 190 760.0k 0% details with -bufcache
UFC file mrg = 509242 1.9g 6%
UFC meta mrg = 206 824.0k 0%

