Patch Name: PHKL_30516 Patch Description: s700_800 11.11 Buffercache performance; select_enh tunable Creation Date: 04/05/06 Post Date: 04/08/20 Hardware Platforms - OS Releases: s700: 11.11 s800: 11.11 Products: N/A Filesets: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP OS-Core.KERN2-RUN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP OS-Core.KERN2-RUN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: No (superseded patches were critical) PHKL_29527: PANIC PHKL_27808: ABORT OTHER Possible ServiceGuard TOC. Performance degradation, slow response time, and high CPU utilization. Category Tags: defect_repair general_release critical panic halts_system Path Name: /hp-ux_patches/s700_800/11.X/PHKL_30516 Symptoms: PHKL_30516: ( SR:8606351156 CR:JAGaf11968 ) select(2) system call, with a timeout lesser than 10ms, takes a longer delay. PHKL_29527: ( SR:8606326776 CR:JAGae89051 ) Systems with 128GB or more of physical memory will panic with the patch PHKL_27808 installed. The stack trace similar to following will be observed on dump analysis: panic+0x6c fdc_target_miss_PCXU+0x1c T600_patch_07+0x0 hdl_zero_page+0x110 kalloc_from_superpage+0x2e0 kalloc+0x14 bminit+0x78 binit+0x130 DoCalllist+0x3c main+0x28 $vstart+0x48 istackatbase+0x84 ( SR:8606300949 CR:JAGae64419 ) The number of buffers that can be allocated to the buffer cache is incorrectly calculated and thus buffer cache will be much smaller than reflected by dbc_max_pct. PHKL_27808: ( SR:8606262741 CR:JAGae27072 ) Performance degradation, slow response time, high CPU utilization, and potential ServiceGuard TOC when performing I/O. PHKL_25886: ( SR:8606217170 CR:JAGad86324 ) I/O performance is very slow when reading/writing many VxFS filesystems at the same time. Defect Description: PHKL_30516: ( SR:8606351156 CR:JAGaf11968 ) A File System tunable needs to be introduced for regulating a feature in select(2), which has been introduced by PHKL_30373. Resolution: Added 'select_enh', a File System dynamic tunable. The default value of this tunable is 0. There will be no impact on the system when the tunable is set to it's default value. PHKL_30373 provides the fix to reduce the delay taken by select(2) system call with an input timeout argument of 10 ms. This delay did not exist in 11.00, but was introduced in 11.11 LR. So, this fix in PHKL_30373 could potentially affect many applications using select(2). We are therefore, giving our customers the option of selecting the behaviour existing in 11.00 or 11.11 through the means of this tunable 'select_enh'. The fix present in PHKL_30373 will come into effect only when the value of 'select_enh' is set to 1. PHKL_29527: ( SR:8606326776 CR:JAGae89051 ) An internal variable defined as 32 bits overflowed causing an incorrect value set to the buffer cache bitmap size. Resolution: The data type for this variable has been changed to prevent the overflow condition. ( SR:8606300949 CR:JAGae64419 ) The minimum and maximum number of buffers calculated as a result of dbc_max_pct and dbc_min_pct can be incorrect on large memory systems (>256GB) due to an overflow of the data type used in the calculation. Resolution: The variable has been suitably typecasted to prevent the overflow during calculation. PHKL_27808: ( SR:8606262741 CR:JAGae27072 ) The performance degradation is caused by fragmentation of the buffer cache virtual map. The fragmentation causes a process to perform exhausting searches for virtual addresses in the buffer cache to accommodate the request. PHKL_25886 doubles the size of the buffer cache virtual map and resolves most of these fragmentation issues. However, PHKL_25886 does not account for varying buffer sizes up to the maximum buffer size of 65536. Resolution: A new tunable was added to help size the buffer cache virtual map: Tunable Range Default bcvmap_size_factor 1..64 2 Each bit in the buffer cache virtual map represents one page. Configuring a larger buffer cache virtual map will reduce fragmentation since more virtual addresses are made available. The size of the bitmap is calculated as follows: bcvmap_sz (in bits) = physical_memory_pages * bcvmap_size_factor Setting bcvmap_size_factor to 2 (default) is sufficient for most systems and will yield the same results as the superseded patch PHKL_25886. If a large buffer cache is used (dbc_max_pct > 50%) and buffers larger than 8KB are used, then bcvmap_size_factor should be configured larger. Buffers larger than 8KB are used with HFS file systems with a block size > 8KB, and with JFS file systems if the tunable max_buf_data_size is set to 65536 (see vxtunefs(1M)). Configuring bcvmap_size_factor outside the supported range (1..64) will result in adjusting the variable to the closest supported range. This new tunable is available only on 64 bit systems as the size of buffer cache virtual map is fixed on 32 bit systems. PHKL_25886: ( SR:8606217170 CR:JAGad86324 ) I/O perforamce degrades when buffercache usage is high. There are several reasons for this. The main reason is virtual address map size. The next is that upon creation, the buffercache headers are not marked invalid, so they do not get used immediately. The third is that the method of virtual address allocation is not optimal. Resolution: Increase the default virtual address map size to be double the physical memory. Initialize the buffercache headers as invalid to ensure immediate use. Modify the buffercache address allocation routines to remove bitmap groups from active queue when they are migrated to the low state. Enhancement: No SR: 8606217170 8606262741 8606300949 8606326776 8606351156 Patch Files: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libfs-pdk.a(bcvalloc.o) /usr/conf/lib/libfs-pdk.a(ufs_mchdep.o) /usr/conf/lib/libfs.a(dbc_bio.o) /usr/conf/lib/libfs.a(fs_tunables.o) OS-Core.KERN2-RUN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/master.d/fs-tune /usr/conf/space.h.d/fs-tune.h OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libfs-pdk.a(bcvalloc.o) /usr/conf/lib/libfs-pdk.a(ufs_mchdep.o) /usr/conf/lib/libfs.a(dbc_bio.o) /usr/conf/lib/libfs.a(fs_tunables.o) OS-Core.KERN2-RUN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/master.d/fs-tune /usr/conf/space.h.d/fs-tune.h what(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libfs-pdk.a(bcvalloc.o): bcvalloc.c $Date: 2002/01/30 13:53:59 $Revision: r11 .11/1 PATCH_11.11 (PHKL_25886) /usr/conf/lib/libfs-pdk.a(ufs_mchdep.o): ufs_mchdep.c $Date: 2003/09/27 09:49:32 $Revision: r 11.11/4 PATCH_11.11 (PHKL_29527) /usr/conf/lib/libfs.a(dbc_bio.o): dbc_bio.c $Date: 2003/07/30 12:15:40 $Revision: r11. 11/1 PATCH_11.11 (PHKL_29527) /usr/conf/lib/libfs.a(fs_tunables.o): fs_tunables.c $Date: 2004/04/06 23:01:04 $Revision: r11.11/1 PATCH_11.11 (PHKL_30516) OS-Core.KERN2-RUN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/master.d/fs-tune: fs-tune $Date: 2004/04/06 23:11:48 $Revision: r11.11 /1 PATCH_11.11 (PHKL_30516) /usr/conf/space.h.d/fs-tune.h: fs-tune.h $Date: 2004/04/06 23:06:22 $Revision: r11. 11/1 PATCH_11.11 (PHKL_30516) */ OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libfs-pdk.a(bcvalloc.o): bcvalloc.c $Date: 2002/01/30 13:53:59 $Revision: r11 .11/1 PATCH_11.11 (PHKL_25886) /usr/conf/lib/libfs-pdk.a(ufs_mchdep.o): ufs_mchdep.c $Date: 2003/09/27 09:49:32 $Revision: r 11.11/4 PATCH_11.11 (PHKL_29527) /usr/conf/lib/libfs.a(dbc_bio.o): dbc_bio.c $Date: 2003/07/30 12:15:40 $Revision: r11. 11/1 PATCH_11.11 (PHKL_29527) /usr/conf/lib/libfs.a(fs_tunables.o): fs_tunables.c $Date: 2004/04/06 23:01:04 $Revision: r11.11/1 PATCH_11.11 (PHKL_30516) OS-Core.KERN2-RUN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/master.d/fs-tune: fs-tune $Date: 2004/04/06 23:18:17 $Revision: r11.11 /3 PATCH_11.11 (PHKL_30516) /usr/conf/space.h.d/fs-tune.h: fs-tune.h $Date: 2004/04/06 23:09:17 $Revision: r11. 11/3 PATCH_11.11 (PHKL_30516) */ cksum(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: 2589179789 5056 /usr/conf/lib/libfs-pdk.a(bcvalloc.o) 1613527565 12276 /usr/conf/lib/libfs-pdk.a(ufs_mchdep.o) 2298367487 6284 /usr/conf/lib/libfs.a(dbc_bio.o) 2179595901 3980 /usr/conf/lib/libfs.a(fs_tunables.o) OS-Core.KERN2-RUN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: 202868130 2798 /usr/conf/master.d/fs-tune 1295681042 5231 /usr/conf/space.h.d/fs-tune.h OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: 849287225 10808 /usr/conf/lib/libfs-pdk.a(bcvalloc.o) 163004609 28232 /usr/conf/lib/libfs-pdk.a(ufs_mchdep.o) 3828622684 13880 /usr/conf/lib/libfs.a(dbc_bio.o) 3162279165 6624 /usr/conf/lib/libfs.a(fs_tunables.o) OS-Core.KERN2-RUN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: 3049481409 2906 /usr/conf/master.d/fs-tune 1062970469 5556 /usr/conf/space.h.d/fs-tune.h Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_29527 PHKL_27808 PHKL_25886 Equivalent Patches: None Patch Package Size: 90 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_30516 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_30516.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_30516. If you do not wish to retain a copy of the original software, include the patch_save_files option in the swinstall command above: -x patch_save_files=false WARNING: If patch_save_files is false when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. For future reference, the contents of the PHKL_30516.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_30516.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_30516.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None