Patch Name: PHKL_8346 Patch Description: s700 10.20 enlarge shared memory address space to 2.75 GB Creation Date: 96/09/02 Post Date: 96/09/03 Repost: 96/10/10 The documentation was modified to clarify the support for additional shared memory. Hardware Platforms - OS Releases: s700: 10.20 Products: N/A Filesets: OS-Core.CORE-KRN Automatic Reboot?: Yes Status: General Superseded Critical: No Path Name: /hp-ux_patches/s700/10.X/PHKL_8346 Symptoms: PHKL_8346: Executables cannot access more than a total of 1.75 GB shared memory to hold combinations of SYSV IPC shared memory segments, shared libraries and shared memory mapped files. Defect Description: PHKL_8346: Current executable types cannot access more than 1.75 GB of shared memory objects. With short pointer addressing on 32-bit PA architecture, each pointer addresses one of four quadrants each of which is 1 GB in size. Current executable types use quadrant 3 and quadrant 4 for shared memory. In user mode, quadrant 1 and quadrant 2 are used for text and data, respectively. This results in a system-wide maximum of 1.75 GB (the last .25 GB in quadrant 4 is reserved for IO). A new executable type has been defined where user text, data and stack share quadrant 1 and quadrant 2 is made available for shared memory. This results in a system-wide maximum of 2.75 GB of shared memory address space. An existing application has to be relinked as an EXEC_MAGIC and then the executable can be chatr(1)'d to be the new executable type SHMEM_MAGIC. This chatr(1) method is the only supported method to create the new executable type SHMEM_MAGIC. Please note that this is an interim solution for increased shared memory addressing till 64-bit hp-ux becomes available. There are several limitations: - In the new SHMEM_MAGIC type, quadrant 2 is only available for system V shared memory segments, unlike quadrants 3 and 4 which are also used for shared libraries and shared memory mapped files. - The maximum size of a single system V shared memory segment a process can attach has not changed and still is limited to 1 GB (shmmax <= 0x40000000). A single system V shared memory segment must completely be contained in one quadrant. Quadrant 2 provides 1GB - 24KB, quadrant 3 provides 1 GB and quadrant 4 only has 0.75 GB of address space due to the memory-mapped IO space in the last 0.25 GB. Shared libraries and shared memory mapped files may further reduce the address space available for system V shared memory segments in quadrants 3 and 4. - Only executables that are linked to be the new SHMEM_MAGIC executable type (or chatr(1)'d to be so) can benefit from this feature. Other executables will continue to see a system wide maximum of 1.75 GB of shared memory. Processes that execute other types of executables will not be able to share the memory in quadrant 2 with a process that is executing the new executable type. - In the new executable type text is mapped at different virtual addresses and so process intensive applications may not benefit. Any increase in performance due to the larger shared memory may be offset by decreases due to TLB inefficiency. Applications that use one process per processor may however benefit. - This will not be supported on future HP implementations of 64-bit architectures (beyond PA 2.0), nor will it need to be as with a 64-bit kernel the size of shared memory supported will be much larger than 2.75 GB. Programs that need more than 1.75 GB of shared memory on these architectures will have to be recompiled for these architectures. - Programs that are compiled as 64-bit executables on any 64-bit HP implementation (including PA 2.0) cannot be marked as SHMEM_MAGIC nor do they need to be as they will already have access to more than 1.75 GB of shared memory. SR: 4701334367 Patch Files: /usr/conf/lib/libhp-ux.a(asm_rv.o) /usr/conf/lib/libhp-ux.a(hdl_fault.o) /usr/conf/lib/libhp-ux.a(hdl_init.o) /usr/conf/lib/libhp-ux.a(hdl_policy.o) /usr/conf/lib/libhp-ux.a(hdl_trans.o) /usr/conf/lib/libhp-ux.a(kern_exec.o) /usr/conf/lib/libhp-ux.a(pm_context.o) /usr/conf/lib/libhp-ux.a(pm_procdup.o) /usr/conf/lib/libhp-ux.a(pm_resource.o) /usr/conf/lib/libhp-ux.a(pm_sendsig.o) /usr/conf/lib/libhp-ux.a(vm_machdep.o) /usr/conf/lib/libhp-ux.a(vm_mmap.o) /usr/conf/lib/libhp-ux.a(vm_superpage.o) /usr/conf/lib/libhp-ux.a(vm_text.o) /usr/conf/lib/libhp-ux.a(vm_vas.o) what(1) Output: /usr/conf/lib/libhp-ux.a(asm_rv.o): asm_rv.s $Date: 96/08/26 22:39:22 $ $Revision: 1.57.98.10 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(hdl_fault.o): hdl_fault.c $Date: 96/08/26 22:28:39 $ $Revision: 1.13.98.9 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(hdl_init.o): hdl_init.c $Date: 96/08/26 22:38:17 $ $Revision: 1.9.98.5 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(hdl_policy.o): hdl_policy.c $Date: 96/08/26 22:29:46 $ $Revision : 1.15.98.9 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(hdl_trans.o): hdl_trans.c $Date: 96/08/29 02:50:57 $ $Revision: 1.12.98.9 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(kern_exec.o): kern_exec.c $Date: 96/08/29 02:51:48 $ $Revision: 1.93.98.16 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(pm_context.o): pm_context.c $Date: 96/08/26 22:35:25 $ $Revision : 1.3.98.6 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(pm_procdup.o): pm_procdup.c $Date: 96/08/26 22:42:06 $ $Revision : 1.11.98.12 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(pm_resource.o): pm_resource.c $Date: 96/08/26 22:36:15 $ $Revisio n: 1.7.98.13 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(pm_sendsig.o): pm_sendsig.c $Date: 96/08/26 22:33:13 $ $Revision : 1.4.98.10 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(vm_machdep.o): vm_machdep.c $Date: 96/08/26 22:34:10 $ $Revision : 1.157.98.29 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(vm_mmap.o): vm_mmap.c $Date: 96/08/26 22:31:19 $ $Revision: 1 .17.98.13 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(vm_superpage.o): vm_superpage.c $Date: 96/08/26 22:40:13 $ $Revisi on: 1.2.98.3 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(vm_text.o): vm_text.c $Date: 96/08/29 02:52:06 $ $Revision: 1 .56.98.8 $ PATCH_10.20 (PHKL_8346) /usr/conf/lib/libhp-ux.a(vm_vas.o): vm_vas.c $Date: 96/08/29 02:52:23 $ $Revision: 1. 18.98.13 $ PATCH_10.20 (PHKL_8346) cksum(1) Output: 568641535 19492 /usr/conf/lib/libhp-ux.a(asm_rv.o) 2914743296 13256 /usr/conf/lib/libhp-ux.a(hdl_fault.o) 555026448 6348 /usr/conf/lib/libhp-ux.a(hdl_init.o) 1423915834 12036 /usr/conf/lib/libhp-ux.a(hdl_policy.o) 1047181494 10016 /usr/conf/lib/libhp-ux.a(hdl_trans.o) 239742621 16132 /usr/conf/lib/libhp-ux.a(kern_exec.o) 3811483497 2236 /usr/conf/lib/libhp-ux.a(pm_context.o) 3662312379 6696 /usr/conf/lib/libhp-ux.a(pm_procdup.o) 2226603191 7076 /usr/conf/lib/libhp-ux.a(pm_resource.o) 3601974949 15940 /usr/conf/lib/libhp-ux.a(pm_sendsig.o) 3351911293 90944 /usr/conf/lib/libhp-ux.a(vm_machdep.o) 354797739 20960 /usr/conf/lib/libhp-ux.a(vm_mmap.o) 4017694933 9992 /usr/conf/lib/libhp-ux.a(vm_superpage.o) 643431260 14432 /usr/conf/lib/libhp-ux.a(vm_text.o) 623785441 13276 /usr/conf/lib/libhp-ux.a(vm_vas.o) Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: The chatr(1) patch PHSS_8358 is required to set the SHMEM_MAGIC attribute. It however is not required to run SHMEM_MAGIC processes. Therefor you only will need it on systems where SHMEM_MAGIC programs are build. Supersedes: None Equivalent Patches: PHKL_8327: s800: 10.20 Patch Package Size: 320 Kbytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHKL_8346 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHKL_8346.depot 5b. For a homogeneous NFS Diskless cluster run swcluster on the server to install the patch on the server and the clients: swcluster -i -b This will invoke swcluster in the interactive mode and force all clients to be shut down. WARNING: All cluster clients must be shut down prior to the patch installation. Installing the patch while the clients are booted is unsupported and can lead to serious problems. The swcluster command will invoke an swinstall session in which you must specify: alternate root path - default is /export/shared_root/OS_700 source depot path - /tmp/PHKL_8346.depot To complete the installation, select the patch by choosing "Actions -> Match What Target Has" and then "Actions -> Install" from the Menubar. 5c. For a heterogeneous NFS Diskless cluster: - run swinstall on the server as in step 5a to install the patch on the cluster server. - run swcluster on the server as in step 5b to install the patch on the cluster clients. By default swinstall will archive the original software in /var/adm/sw/patch/PHKL_8346. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. Warning: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHKL_8346.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_8346.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: Due to the number of objects in this patch, the customization phase of the update may take more than 10 minutes. During that time the system will not appear to make forward progress, but it will actually be installing the objects.