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%
Outils personnels