ADSM-L

Case 818302 - Onbar errors.

2015-10-04 17:47:37
Subject: Case 818302 - Onbar errors.
From: Bardsley.K@AMSTR
To: Bruces AT informix DOT com, Cernicica.S, *
Date: Tuesday, 2 February 1999 9:43am MT
###### Copy of part of heads up report for January 1999 from
###### Barbara Hopkins
######  NOTE: We are using HPUX 11.0 64 bit operating system.

**********************************************************************
*********
***  Performance hints for large multi_cpu HP-UX systems
***
**********************************************************************
*********

Here are some performance tips based on work an Informix consultant
performed with a customer who was using IDS 7.30 and a HP system
running HP-UX 11.0:

* Do not allocate more than 3 shared memory segments

  On HP, due to the PA-RISC architecture, if more than 3
  shared memory segments are allocated, there maybe a
  performance impact incurred during shared memory access.

* Set RESIDENT to -1 in ONCONFIG to lock all segments in memory

  In IDS 7.3, setting RESIDENT to -1 will make all resident and
  virtual shared memory segments resident.  Note that this should
  only be set if there is enough physical memory do so.

* Use AFF_SPROC, AFF_NPROCS to bind CPU VPs

  Using processor affinity to bind the CPU virtual processors to
  the CPUs.

* As root run 'chatr +pd 64M +pi 4M $INFORMIXDIR/bin/oninit' to use
  larger memory pages

  In the customer's case, the use of this yielded significant
improvements
  regarding CPU utilization.

  Using chatr will set the binary to SHMEM_MAGIC, which will allow it
  address up to 2.75 GB of shared memory, and the +pd option will
request
  a particular virtual memory page size that should be used for data,
  and +pi will request a particular virtual memory page size that
  should be used for instructions.



**********************************************************************
*********
***  Maximizing Informix utilization of shared memory on HP-UX 10.20
***
**********************************************************************
*********

When using HP-UX 10.20, with the appropriate patches in place, the
system-wide shared memory maximum can be extended from 1.75GB to
2.75GB. (This capability is new to HP-UX 10.20. The size of shared
memory was restricted to 1.75GB or less in previous versions of
HP-UX.) However, there are some caveats in the details. This article
is
an attempt to present both a synopsis of the issue and details
relevant
to Informix customers.


HOW TO:

1. Install the appropriate HP-UX patches (see below for details).
2. Use the HP-UX chatr utility to modify ALL executables which are to
   use shared memory (details below).
3. Test all 3rd party applications for compatibility.


REQUIRED HP-UX PATCHES:

Minimally required HP patches (some of these may be necessary for
development only; some may have been made obsolete by more recent
patches):

o PHSS_10926: s700_800 10.01-X0 ld(1) and developers tools cumulative
o PHKL_11086: s800 10.20 LVM, exec, ptrace, MMF, shmem, buf cache,
  pstat, pdir
o PHCO_10964: s700_800 10.20 LVM commands cumulative patch
o PHKL_8327: advises 'chatr'ing the executables
o PHSS_15380: enables HP's debugger to attach to processes that have
  been set to SHMEM_MAGIC.


USING CHATR:

In order to access 2.75 GB of shared memory some binaries have been
built with the linker's "-N" option to set them to EXEC_MAGIC. The
chatr command should be run on these binaries to set them to
SHMEM_MAGIC, which will enable them to access 2.75 GB.

The command line syntax is:

chatr -M <executable>

If the executable was not linked with the "-N" option to make it
EXEC_MAGIC, you will see the following error:

chatr:(error) - only EXEC_MAGIC files can be made SHMEM_MAGIC

If you plan to use this feature on any Informix executables, try to
use it on ALL Informix executables that reside on your server. If you
see the error message above, on more than one or two of the utilities,
check the version. You may need to upgrade.

Make sure that you read the HP-UX manual pages for chatr before using
it.



INFORMIX DYNAMIC SERVER:

Support for more than 1.75 GB of shared memory on HP-UX 10.20 went
largely undocumented within Informix products until very recently.
However, you will find that the following versions and versions that
have been released more recently all have support for 2.75 GB of
shared
memory on HP-UX 10.20:

o 7.23.UC4 (see caveats below)
o 7.24.UC4X1/7.24.UC5
o 7.30.UC3

If you plan to use this feature on any Informix executables, try to
use it on ALL Informix executables that reside on your server. If you
see the error message above, on more than one or two of the utilities,
check the version. You may need to upgrade.


CAVEATS:

* In versions of Informix Dynamic Server prior to 7.24.UC4X1/7.24.UC5
you cannot use OnBar if the SHMEM_MAGIC flag is set.



THE FINE DETAILS (reprinted from HP-UX PHKL_8346 documentation):

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 0.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 must be re-linked 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 until 64-bit HP-UX 11.0 becomes available. There are
several limitations:

o 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.

o 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).

o A single system V shared memory segment must  be completely
  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.

o 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.

o 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.

o 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.

o 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.

o 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.

############################################################################
######  Errors received back to the terminal from onbar command #######
TESTIT@hp13: /usr/adsm> onbar -b -L 0 rootdbs
/usr/lib/dld.sl: Can't shl_load() a library containing Thread Local Storage:
 /us
r/lib/libpthread.1
/usr/lib/dld.sl: Exec format error
TESTIT@hp13: /usr/adsm>

######  Current portion of the bar_act_log  ##########
 1999-02-02 08:21:45 29451  29450 /inf730uc5/bin/onbar_d -b -L 0 rootdbs
 1999-02-02 08:21:46 29451  29450 ERROR: An unexpected error occurred:   .
Exec format error
 1999-02-02 08:21:46 29451  29450 WARNING: Could not open XBSA library
 /usr/adsm/api/libXApi.sl, so trying default path.
 1999-02-02 08:21:46 29451  29450 ERROR: Version 0.0.0 of the XBSA shared
 library is not compatible with version 1 o
f ON-Bar.

#######  Onconfig BAR variables ##########

# Backup/Restore variables
BAR_BSALIB_PATH  /usr/adsm/api/libXApi.sl
BAR_ACT_LOG/tmp/inftestit_bar_act.log
BAR_MAX_BACKUP2
BAR_RETRY3
BAR_NB_XPORT_COUNT100
BAR_XFER_BUF_SIZE15
BAR_DEBUG       9
BAR_DEBUG_LOG   /tmp/inftestit_bar_debug.log



######  Most current portion of the onbar debug log   ##########

 1999-02-02 08:21:44 29451  29450 read_config:server  testit_a1:9  max_backup
 2  retry    3  actfd        3
 1999-02-02 08:21:44 29451  29450             debugfd 6  debug      9  bootfd
  4  log_blks     500
 1999-02-02 08:21:44 29451  29450             buf size   30720  buf count 100
 ltapedev /home/dba/inftestit/ltapedev
 1999-02-02 08:21:44 29451  29450 read_config: return 0
 1999-02-02 08:21:45 29451  29450 bar_main: server status 5
 1999-02-02 08:21:45 29451  29450 do_args: enter 5
 1999-02-02 08:21:45 29451  29450 do_args: got -b command
 1999-02-02 08:21:45 29451  29450 do_args: got -L 0 command
 1999-02-02 08:21:45 29451  29450 bar_add_dbslist: enter
 1999-02-02 08:21:45 29451  29450 bar_add_dbslist: input dbs_name rootdbs
 1999-02-02 08:21:45 29451  29450 bar_add_dbslist: return 0 (0x00)
 1999-02-02 08:21:45 29451  29450 Removing the onbar_restore file
 1999-02-02 08:21:45 29451  29450 do_args: workflags 3
 1999-02-02 08:21:45 29451  29450 do_args: return 0
 1999-02-02 08:21:45 29451  29450 bar_siginit: enter
 1999-02-02 08:21:45 29451  29450 bar_siginit: return
 1999-02-02 08:21:45 29451  29450 get_server_pid: enter
 1999-02-02 08:21:45 29451  29450 get_server_pid: pid 19451
 1999-02-02 08:21:45 29451  29450 get_server_pid: pid 19452
 1999-02-02 08:21:45 29451  29450 bar_sighdlr: enter signal: 18
 1999-02-02 08:21:45 29451  29450 wait_on_child: enter
 1999-02-02 08:21:45 29451  29450 wait_on_child: child 29452 exited with
 status 0
 1999-02-02 08:21:45 29451  29450 get_wait_status: enter
 1999-02-02 08:21:45 29451  29450 get_wait_status: input cpid 29452 status 0
 1999-02-02 08:21:45 29451  29450 get_wait_status: return -1 (0xffffffff)
 1999-02-02 08:21:46 29451  29450 wait_on_child: output child_exit_code -1
 1999-02-02 08:21:46 29451  29450 wait_on_child: return -1 (0xffffffff)
 1999-02-02 08:21:46 29451  29450 bar_sighdlr: return
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19453
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19454
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19455
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19456
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19457
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19458
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19459
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19460
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19461
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19462
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19463
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19464
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19465
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19466
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19467
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19468
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19469
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19470
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19471
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19472
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19473
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19474
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19475
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19476
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19477
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19478
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19479
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19480
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19481
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19482
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19483
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19484
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19485
 1999-02-02 08:21:46 29451  29450 get_server_pid: pid 19486
 1999-02-02 08:21:46 29451  29450 get_server_pid: return 0 (0x00)
 1999-02-02 08:21:46 29451  29450 bar_exec: enter
 1999-02-02 08:21:46 29451  29450 get_a_connection: enter
 1999-02-02 08:21:46 29451  29450 bar_api_connect: enter
 1999-02-02 08:21:46 29451  29450 bar_alarm: enter
 1999-02-02 08:21:46 29451  29450 bar_alarm: input 600 seconds
 1999-02-02 08:21:46 29451  29450 bar_alarm: return
 1999-02-02 08:21:46 29451  29450 bar_alarm: enter
 1999-02-02 08:21:46 29451  29450 bar_alarm: input 0 seconds
 1999-02-02 08:21:46 29451  29450 bar_alarm: return
 1999-02-02 08:21:46 29451  29450 bar_api_connect: output errtxt
 1999-02-02 08:21:46 29451  29450 bar_api_connect: return 0 (0x00)
 1999-02-02 08:21:46 29451  29450 get_a_connection: return 0
 1999-02-02 08:21:46 29451  29450 bar_full_logs: enter
 1999-02-02 08:21:46 29451  29450 bar_full_logs: select count(*)    from
 sysmaster:syslogs
 1999-02-02 08:21:46 29451  29450 bar_full_logs: select got total_ct 3
 1999-02-02 08:21:46 29451  29450 bar_full_logs: select count(*)    from
 sysmaster:syslogs    where used != 0 and is_backed_up = 0
 1999-02-02 08:21:46 29451  29450 bar_full_logs: select got full_ct 2
 1999-02-02 08:21:46 29451  29450 bar_full_logs: output log_flag 1
 1999-02-02 08:21:46 29451  29450 bar_full_logs: return 0 (0x00)
 1999-02-02 08:21:46 29451  29450 barQueryApi: enter
 1999-02-02 08:21:46 29451  29450 bar_ver_init: enter
 1999-02-02 08:21:46 29451  29450 bar_ver_init: bar  bsa  sm  sm version
 1999-02-02 08:21:46 29451  29450 bar_ver_init: return
 1999-02-02 08:21:46 29451  29450 BSAQueryApiVersion: enter
 1999-02-02 08:21:46 29451  29450 BSAQueryApiVersion: enter
 1999-02-02 08:21:46 29451  29450 bar_loadXBSA: enter
 1999-02-02 08:21:46 29451  29450 bar_loadXBSA: return 0 (0x00)
 1999-02-02 08:21:46 29451  29450 BSAQueryApiVersion: return
 1999-02-02 08:21:46 29451  29450 BSAQueryApiVersion: return 0 (0x00)
 1999-02-02 08:21:46 29451  29450 barQueryApi: BSA version 0.0.0
 1999-02-02 08:21:46 29451  29450 barQueryApi: select * from systables where
 tabname = bar_version
 1999-02-02 08:21:46 29451  29450 bar_ver_sel: enter
 1999-02-02 08:21:46 29451  29450 bar_ver_sel: input bar 1 bsa 0.0.0 sm name
 version
 1999-02-02 08:21:46 29451  29450 bar_ver_where: enter
 1999-02-02 08:21:46 29451  29450 bar_ver_init: input bar 1 bsa 0.0.0 sm  sm
 version
 1999-02-02 08:21:46 29451  29450 bar_ver_where: return  where  bar_version =
 '1'  and  bsa_version = '0.0.0'
 1999-02-02 08:21:46 29451  29450 bar_ver_sel: select * from bar_version
 where  bar_version = '1'  and  bsa_version = '0.0.0'
 1999-02-02 08:21:46 29451  29450 bar_ver_sel: return 100
 1999-02-02 08:21:46 29451  29450 barQueryApi: return 139 (0x8b)
 1999-02-02 08:21:46 29451  29450 return from bar_exec 139
 1999-02-02 08:21:46 29451  29450 bar_unloadXBSA: enter
 1999-02-02 08:21:46 29451  29450 bar_unloadXBSA: return -1 (0xffffffff)
 1999-02-02 08:21:46 29451  29450 bar_main: process exit 139 (0x8b)
 1999-02-02 08:21:46 29451  29450 bar_cleanup: enter
 1999-02-02 08:21:46 29451  29450 bar_api_disconnect: enter
 1999-02-02 08:21:46 29451  29450 bar_alarm: enter
 1999-02-02 08:21:46 29451  29450 bar_alarm: input 600 seconds
 1999-02-02 08:21:46 29451  29450 bar_alarm: return
 1999-02-02 08:21:46 29451  29450 bar_alarm: enter
 1999-02-02 08:21:46 29451  29450 bar_alarm: input 0 seconds
 1999-02-02 08:21:46 29451  29450 bar_alarm: return
 1999-02-02 08:21:46 29451  29450 bar_api_disconnect: return
 1999-02-02 08:21:46 29451  29450 bar_cleanup: return
############################################################################


>>>>>>>>>>>>>> Global CS Original External RFC822 Hdrs Begin <<<<<<<<<<<<<<
X-Env-Sender: tivoli AT tivprod.amstr DOT com
X-Env-Recipient: Bardsley.K AT amstr DOT com
X-End-of-Envelope:
Received: from tivprod (162.120.113.238) by adgcs01.amstr.com (NPlex 2.0.108)
fo Received: by tivprod. (SMI-8.6/SMI-SVR4)
id IAA09177; Tue, 2 Feb 1999 08:27:02 -0800
Date: Tue, 2 Feb 1999 08:27:02 -0800
From: tivoli AT tivprod.amstr DOT com (Tivoli ID)
Message-Id: <199902021627.IAA09177@tivprod.>
Subject: onbar
Content-Type: text
Apparently-To: Bardsley.K AT amstr DOT com
<Prev in Thread] Current Thread [Next in Thread>