> *Hi, > > I am working on Opensolaris build128 (64bit)on a Intel system > with 6GB of memory. Out of that, I would like to use first 1GB > for solaris. I have set physmem=0x40000 as the boot argument.
Well two things come to mind. Firstly I was not aware you could set that value as a parameter via boot. I think you need to put that into /etc/system and not as a param via some grub boot line. Even then that DOES NOT WORK. See below. Secondly it is pages of memory. I have never tried using physmem to constrain memory pages because I generally just rip the memory out of the machine and do it the old fashioned way. http://docs.sun.com/app/docs/doc/817-0404/chapter2-1?a=view physmem Description Modifies the system's configuration of the number of physical pages of memory after the Solaris OS and firmware are accounted for. Data Type Unsigned long Default Number of usable pages of physical memory available on the system, not counting the memory where the core kernel and data are stored Range 1 to amount of physical memory on system Units Pages Dynamic? No Validation None When to Change Whenever you want to test the effect of running the system with less physical memory. Because this parameter does not take into account the memory used by the core kernel and data, as well as various other data structures allocated early in the startup process, the value of physmem should be less than the actual number of pages that represent the smaller amount of memory. Commitment Level Unstable Some values I tend to look at or tweak from time to time for fun and profit : r...@aequitas:/root# mdb -k Loading modules: [ unix genunix specfs mac cpu.generic uppc pcplusmp rootnex scsi_vhci ufs ip hook neti sockfs arp usba uhci stmf fctl nca lofs zfs idm cpc random crypto nfs fcip ptm sppp ] > physmem/D physmem: physmem: 243326 > pagesize/D mdb: failed to dereference symbol: unknown symbol name > lotsfree/D lotsfree: lotsfree: 3801 > desfree/D desfree: desfree: 1900 > minfree/D minfree: minfree: 950 > throttlefree/D throttlefree: throttlefree: 950 > pageout_reserve/D pageout_reserve: pageout_reserve:475 > tune_t_minarmem/D tune_t_minarmem: tune_t_minarmem:25 > handspreadpages/D handspreadpages: handspreadpages:52819 > swapfs_reserve/D swapfs_reserve: swapfs_reserve: 1900 > moddebug/D moddebug: moddebug: 0 > maxphys/D maxphys: maxphys: 57344 > Since this is an x86 machine I have a pagesize of 4096 bytes. Let's verify that : r...@aequitas:/root# prtconf -v | grep Memory Memory size: 959 Megabytes r...@aequitas:/root# r...@aequitas:/root# bc scale=6 4096 * 243326 996663296 Funny because the machine really has 1G of memory in it. > physmem/X physmem: physmem: 3b67e Oh well, your value of 0x40000 should work in /etc/system. Let me try with 256MB of memory and see what I get. Here is my /etc/system just for laughs : ( note the broken weird first line .. I didn't do that ) *ident "%Z%%M% %I% %E% SMI" /* SVR4 1.5 */ * * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * SYSTEM SPECIFICATION FILE * ********************************************************************** * * Description : physmem * * Modifies the system's configuration of the number of * physical pages of memory after the Solaris OS and * firmware are accounted for. * * Data Type : Unsigned long * * Default : * * Number of usable pages of physical memory available on * the system, not counting the memory where the core * kernel and data are stored * * Range : 1 to amount of physical memory on system * * Units : Pages * * When to Change : * * Whenever you want to test the effect of running the * system with less physical memory. Because this * parameter does not take into account the memory used * by the core kernel and data, as well as various other * data structures allocated early in the startup process, * the value of physmem should be less than the actual * number of pages that represent the smaller amount of * memory. * set physmem=65536 *********************************************************************** * * Description : reserved_procs * * Specifies number of system process slots to be reserved * in the process table for processes with a UID of root (0) * * Consider increasing to 10 + normal number of UID 0 (root) * processes on system. This setting provides some cushion * should it be necessary to obtain a root shell during a time * when the system is otherwise unable to create user-level * processes. * set reserved_procs = 32 ****************************************************************************** * * Description : pt_cnt * * The number of available /dev/pts entries is dynamic up to * a limit determined by the amount of physical memory * available on the system. * * pt_cnt is one of three variables that determines the * minimum number of logins that the system can accommodate. * The default maximum number of /dev/pts devices the system * can support is determined at boot time by computing the * number of pty structures that can fit in a percentage of * system memory (see pt_pctofmem). If pt_cnt is zero, the * system allocates up to that maximum. If pt_cnt is non-zero, * the system allocates to the greater of pt_cnt and the * default maximum. * * Data Type : Unsigned integer * Default : 0 * Range : 0 to maxpid * Units : Logins/windows * Dynamic? : No * Validation: None * * When to Change * * When you want to explicitly control the number of users * who can remotely log in to the system. * Note from Dennis Clarke : we may want to throttle this later * set pt_cnt = 32 ****************************************************************************** * * Description : pt_pctofmem * * Specifies maximum percentage of physical memory that * can be consumed by data structures to support /dev/pts * entries. * * A system running a 64-bit kernel consumes 176 bytes * per /dev/pts entry. A system running a 32-bit kernel * consumes 112 bytes per /dev/pts entry. * * Default = 5 percent * * Note from Dennis Clarke : It may be necessary to set this to a value * higher than 5% on a really small machine. * Great for embedded devices right. * set pt_pctofmem = 10 ****************************************************************************** * * Description : pt_max_pty * * Defines the maximum number of ptys the system offers. * * Data Type : Unsigned integer * * Default = 0 (Uses system-defined maximum) * * Range : 0 to MAXUINT * * Units is number of Logins/windows * * Dynamic? = Yes * * Validation : None * * Implicit * * Should be greater than or equal to pt_cnt. Value is not * checked until the number of ptys allocated exceeds the * value of pt_cnt. * * When to Change * * When you want to place an absolute ceiling on the number * of logins supported, even if the system could handle more * based on its current configuration values. * Note from Dennis Clarke : You may want to limit this someday. * : But not today. * set pt_max_pty = 64 ****************************************************************************** * * Description : pidmax * * This parameter specifies value of largest possible process ID. * pidmax sets the value for the maxpid variable. Once maxpid is * set, pidmax is ignored. maxpid is used elsewhere in the kernel * to determine the maximum process ID and for constraint * checking. Attempts to set maxpid by adding an entry to the * /etc/system file have no effect. * * Note from Dennis Clarke : I have used this in the past when testing a new * : kernel build on a really small machine. If this * : value is set too low then you can have a wild * : set of errors at boot time. Don't touch it ! * set pidmax = 32767 <-- not really recommended ****************************************************************************** * * Description : max_nprocs * * Maximum number of processes that can be created on a system. * Includes system and user processes. Any value entered in * /etc/system is used in the computation of maxuprc. * * This value is also used in determining the size of several * other system data structures. Other data structures where * this variable plays a role are: * * - Determining the size of the directory name lookup * cache (if ncsize is not specified). * * - Allocating disk quota structures for UFS * (if ndquot is not specified). * * - Verifying that the amount of memory used by * configured system V semaphores does not exceed * system limits. * * - Configuring Hardware Address Translation resources * for the sun4m and Intel platforms. * set max_nprocs = 512 ****************************************************************************** * * Description : maxuprc * * Maximum number of processes that can be created on a system * by any one user. * * Data Type : Signed integer * * Default : max_nprocs - reserved_procs * * Range : 1 to max_nprocs - reserved_procs * * Validation : Compared to max_nprocs - reserved_procs and * then set to the smaller of the two. * * When you want to specify a hard limit for the number of * processes a user can create that is less than the default * value of however many processes the system can create. * Attempting to exceed this limit generates the following * warning messages on the console or in the messages file: * * out of per-user processes for uid N * set maxuprc = 64 ****************************************************************************** * * Description : md_mirror:md_resync_bufsz * * To override the default buffer_size value used by the * svc:/system/mdmonitor service, you can edit /etc/system * to specify: * * set md_mirror:md_resync_bufsz = 2048 * * Such that resyncs occur as quickly as possible. * * See metasync(1M) * set md_mirror:md_resync_bufsz = 2048 ****************************************************************************** * * Requested by Oracle DBA for reasons unknown * * set shmsys:shminfo_shmmax = 4294967295 * set shmsys:shminfo_shmseg = 1024 * set shmsys:shminfo_shmmni = 1024 * set semsys:seminfo_semaem = 16384 * set semsys:seminfo_semmni = 1024 * set semsys:seminfo_semmap = 1026 * set semsys:seminfo_semmns = 16384 * set semsys:seminfo_semmsl = 100 * set semsys:seminfo_semopm = 100 * set semsys:seminfo_semmnu = 2048 * set semsys:seminfo_semume = 256 * set msgsys:msginfo_msgmap = 1026 * other bizarre black magic may be requested but simply is not * needed on a modern Solaris or OpenSolaris server. I mean really. ****************************************************************************** system reboots now ... Shutdown started. Thu Jun 24 23:05:58 GMT 2010 Changing to init state 6 - please wait Broadcast Message from root (pts/1) on aequitas Thu Jun 24 23:05:59... THE SYSTEM aequitas IS BEING SHUT DOWN NOW ! ! ! Log off now or risk your files being damaged showmount: aequitas: RPC: Program not registered updating //platform/i86pc/boot_archive updating //platform/i86pc/amd64/boot_archive . . . r...@aequitas:/root# uptime 23:11pm up 0:03, 1 user, load average: 1.74, 1.63, 0.73 r...@aequitas:/root# mdb -k Loading modules: [ unix genunix specfs dtrace mac cpu.generic uppc pcplusmp rootnex scsi_vhci ufs ip hook neti sockfs arp usba uhci stmf fctl nca lofs zfs md random idm cpc crypto nfs fcip ptm sppp ] > physmem/D physmem: physmem: 243326 > physmem/X physmem: physmem: 3b67e > r...@aequitas:/root# grep physmem /etc/system * the value of physmem should be less than the actual set physmem=65536 Well lo and behold, the boot process seems to ignore the physmem setting in /etc/system. -- Dennis Clarke dcla...@opensolaris.ca <- Email related to the open source Solaris dcla...@blastwave.org <- Email related to open source for Solaris _______________________________________________ opensolaris-code mailing list opensolaris-code@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/opensolaris-code