Automatic Dynamic Incremental Nonlinear Analysis is available from [[ADINA R & D Inc.|http://www.adina.com]] \nHP Strategic Alliance Manager for ADINA Inc. - Lee Fisher
*Some Opteron systems silently reduce memory speed when too many DIMM slots are populated.\nCarefully read your HW documentation for proper setup.\n*AMD PowerNow feature reduces the CPU clock during low workload times. The consequences are\nLow performance for short jobs when machine is „cold“\nNo impact for long running jobs. System warms up within minutes.\nSystem clock goes wrong. This is a Linux bug. Workaround is to disable PowerNow:\n#Add boot option „noapic acpi=no“\n#Modify Linux services:\n{{{/sbin/chkconfig –level 345 cpuspeed off}}}\n{{{/sbin/chkconfig –level 345 acpid off}}}\n*[[ccNUMABufferCacheInteraction]]
HP Strategic Alliance Manager for AMLS from CDH Jeff Wall\nAMLS runs as a solver in an FEA environment and is Memory intensive. Using SMP parallelization, it scales up to 32 processors.\nUses HP-MPI to achieve parallel performance.
An interface specification with the more common name for [[IDE]], retroactively renamed [[PATA]] to differentiate it from [[SATA]].\n[[ATA]] compatible disks are not recommended in server class machines for hardware robustness reasons.\n
Available from [[Abaqus Inc.|http://www.abaqus.com]] \nHP Strategic Alliance Manager for ABAQUS Inc. - Lee Fisher\nUses HP-MPI to achieve parallel performance.\nCurrent released version: ABAQUS v6.6\nSee AbaqusTuningGuide relative to this application details.
1.Parallel Standard and Explicit Jobs use HP-MPI\nFor 6.5, [[Abaqus]] uses HP-MPI in /opt/mpi on HP-UX and in /opt/hpmpi on [[Linux]]\nFor 6.6, HP-MPI comes shipped in the distribution: ../6.6-x/External/mpi\n(HP-MPI 2.1.1 for HP-UX and HP-MPI 2.2 for [[Linux]] for [[Abaqus]] 6.6-1).\nTo use HP-MPI in default location for example, set following in {{{abaqus_v6.env}}}:\n{{{mp_mpirun_path = {NATIVE:'/opt/mpi/bin/mpirun'} }}}# HP-UX\n{{{mp_mpirun_path = {HP:'/opt/hpmpi/bin/mpirun'} }}} # [[Linux]]\nUse HP-MPI 2.2 or later on HP-UX and [[Linux]], for {{{cpu_bind[_mt]}}} functionality (see below).\n2.Performance on ccNUMA-CPU and Thread Affinity\nccNUMA systems consist of:\n2.1 Itanium2 cell based servers configured with local memory (HP-UX and [[Linux]])\n2.2 AMD Opteron servers with 2.6 kernel NUMA enabled ([[Linux]])\nProcesses use the local memory of the cpu/core they run on. If the OS scheduler moves a process, its memory does not follow it. This can cause application performance degradation due to remote memory access, and large variation in job runtime from run to run. The solution is to bind processes to cores. Since all Standard and Explicit\nparallel jobs are MPI applications using HP-MPI, one can use HP-MPI 2.2 {{{cpu_bind[_mt]}}} option to bind the HP-MPI processes to cores.\n{{{cpu_bind=X}}} binds HP-MPI processes\n{{{cpu_bind_mt=X}}} binds HP-MPI processes and unbinds the threads allowing them to run elsewhere\nFor systems with multiple users, use least loaded ({{{X = ll}}}).\nFor single user systems, use round robin ({{{X = rr}}}) as in the examples below.\nBinding [[Abaqus]] Parallel Jobs on [[Linux]]:\nIn {{{abaqus_v6.env}}}, set following:\n{{{ mp_mpirun_options="-cpu_bind_mt=v,rr"}}} (Standard Direct Solver Job)\n{{{ mp_mpirun_options="-cpu_bind=v,rr" }}} (Explicit & Standard Iterative Solver Jobs)\n"v" flag is for verbose output.\nBinding [[Abaqus]] Parallel Jobs on HP-UX:\nIn abaqus_v6.env, set the following:\n{{{ mp_mpirun_options="-cpu_bind=v,rr"}}}\nIn HP-UX, the thread binding policies are set in the [[Abaqus]] source code.\nFor 6.6-1, [[Abaqus]] has HP-MPI 2.1.1 shipped with distribution, therefore, point to HP-MPI 2.2 by setting following in {{{abaqus_v6.env}}}:\n{{{ mp_mpirun_path = {NATIVE:'/opt/mpi/bin/mpirun'} }}} (assuming HP-MPI 2.2 is installed)\nBinding [[Abaqus]] Serial Jobs on [[Linux]]:\nSerial jobs can be bound as well. One can use {{{numactl}}} like this:\n{{{% numactl --cpubind 0 -localalloc /apps/abaqus/Commands/abq661 job=foo cpu=1...}}}\nThis binds the [[Abaqus]] job to the memory pool on node 0 and forces it to use local memory.\nOn HP-UX, [[Abaqus]] source code takes care of this.\n3. Performance on ccNUMA - Additional Tips:\n3.1 Run [[Linux]] 2.6 kernel (RH4 or SLES9) which supports NUMA architectures\n3.2 Verify local memory is configured via {{{numactl -hardware}}}\n3.3 On AMD Opteron systems, clear [[Linux]] page cache to release memory before running an [[Abaqus]] job, see [[ccNUMABufferCacheInteraction]]\n4. Tips For Running [[Abaqus]] Jobs on Clusters:\nVerify setup:\n4.1 .rhosts must have all the hostnames in it\n4.2 do not alias rsh, rcp, cp, rm, ls, mkdir or [[Abaqus]] remote host commands may fail\n4.3 [[Abaqus]] uses rsh for execution of commands on the remote hosts. If running on a non-XC cluster that is ssh-enabled instead, additionally set:\n4.3.1 key authentication using rsa/dsa as designated by your system administrator\n4.3.2 set following in {{{abaqus_v6.env}}}:\n{{{ import os}}}\n{{{ mp_rsh_command = 'ssh -n -l %U %H %C'}}}\n4.4 filesystems\n4.4.1 Run out of the same local filesystem on each host (i.e., /lvol/joe) and [[Abaqus]] will take care of creating directories on remote hosts\n4.4.2 Run out of shared filesystem, if local is not available\n4.4.3 Use software [[RAID]] 0 for at least scratch files (i.e., scratch=/scratch1)\n4.4.3 Use xfs (fastest), ext2, or ext3 with journaling OFF for [[Linux]]\n4.5 Invoke [[Abaqus]] product from same directory on each host (i.e., /apps/abaqus )\n4.6 Add verbose=2 to [[Abaqus]] job command to see where MPI processes are spawned\n4.7 For XC runs:\n4.7.1 Set key authentication using rsa/dsa on the head node\n4.7.2 Verify LSF JOB_STARTER script has been installed on cluster\n4.7.3 Turn journaling OFF ext3 filesystems. (XC2.1) (journaling affects I/O performance of all HPC applications)\n4.7.4 LSF is already setup. Do not source cshrc.lsf or take care not clobbering LD_LIBRARY_PATH or a an srun error will result.\n4.7.5 For 6.5 multihost jobs, use [[Abaqus]] 6.5-5 or later and HP-MPI 2.1.1 or later. Add following in {{{abaqus_v6.env}}}:\n{{{\n mp_rsh_command = 'ssh -n -l %U %H %C'\n import os\n os.environ['MPI_USESRUN'] = '1'\n os.environ['MPI_USESRUN_IGNORE_ARGS'] = '-stdio=bnone'\n os.environ['LIBELAN4_TRAPSIG'] = '30' (this line for Quadrics ELAN4 only) \n}}}\n4.7.6 For 6.6 multihost jobs, add following in {{{abaqus_v6.env}}}:\n{{{\n import os\n os.environ['LIBELAN4_TRAPSIG'] = '30' (this line for ELAN4 Quadrics only)\n if os.environ.has_key('SLURM_NNODES'):\n if int(os.environ['SLURM_NNODES']) > 1 :\n if applicationName == 'analysis' :\n mp_rsh_command='ssh -n -l %U %H %C'\n os.environ['MPI_USESRUN'] = '1'\n os.environ['MPI_USESRUN_IGNORE_ARGS'] = '-stdio=bnone'\n if analysisType == STANDARD and 'DDM' not in solverTypes\n os.environ['MPI_SRUNOPTIONS'] = '-n %s' % os.environ['SLURM_NNODES']\n else:\n os.environ['MPI_SRUNOPTIONS'] = '-n %s' % cpus\n}}}\n4.7.7 bsub job under LSF as normal
AcuSolve is available from [[ACUSIM Software||http://www.acusoft.com]]\nHP Strategic Alliance Manager for ACUSIM Software - Brian Lowe\nUses HP-MPI to achieve parallel performance.
Ansys Structural is available from [[Ansys Inc.|http://www.ansys.com]]\nHP Strategic Alliance Manager for ANSYS Brian Lowe\nUses HP-MPI to achieve parallel performance.\n\nIf ANSYS is the only application to be run on the system and there are multiple users running at once, HP suggests setting HP-UXBufferCache to a low setting. ANSYS has it’s own IO buffering system which when used with HP-UXBufferCache set low can substantially help performance in a throughput environment. If there are a heterogeneous group of applications to be run, then a lot will depend on what the other applications are. But most likely a HP-UXBufferCache percentage set as low as possible, along with the ANSYS IO buffering scheme described in the next paragraph, is preferred.\nANSYS’ config81.ans File and Parameters description are found in ANSYS online manuals. The two that affect IO performance are ‘size_bio’ and ‘num_bufr’. Depending on the IO requirements of the job you may want to adjust these values. The size_bio parameter sets the size of the IO buffer and num_bufr is the number of buffers. Note that when you set these above the default values that you may have to increase the memory for the job. Experience running ANSYS benchmarks shows these two parameters have the second greatest impact on job performance, with the greatest factor being system configuration settings. NOTE: this is critical for multiprocessor machines where ANSYS may be competing for IO resources with another application.\nGraphics Libraries:\nTo run ANSYS 8.1 and later revisions on HP servers, you will need to have the OGL 3D graphics run-time libraries. The libraries may be found on the Application CD that comes with HP-UX. You will need these libraries even if the server does not have a graphics card.
To make quoted bits of text stand out, you can use BlockQuotes within your tiddlers, like this:\n\nJeremy Ruston said:\n<<<\nA TiddlyWiki is like a blog because it's divided up into neat little chunks, but it encourages you to read it by hyperlinking rather than sequentially: if you like, a non-linear blog analogue that binds the individual microcontent items into a cohesive whole.\n<<<\n\nLike BulletPoints and NumberedBulletPoints, you can have multiple levels of BlockQuotes. Just edit this tiddler to see how it's done.\n\n>level 1\n>level 1\n>>level 2\n>>level 2\n>>>level 3\n>>>level 3\n>>level 2\n>level 1\n
Most, if not all, machines shipped to partners or customers are shipped with the AutoBoot flag on. This means that the machine should boot up automatically once the power is applied to the machine, and the switch is turned on. To boot from anything but the current path of the boot disk you must stop this process. Once all the hardware in the machine is tested and configured, there is a 10 second window which you can stop the autoboot action. On some systems (a loaded K-class machine), this can mean waiting up to 25 minutes for these tests to complete, but you must be there for that 10 second window.\n\nOnce the autoboot process is stopped, you will be presented with the "command:" prompt and a menu. If you haven't already done so, insert the CD you wish to boot from now. From this point you can issue the command "sea", which will search for bootable media. It will present you will a choice of places to boot from, and depending on which machine you are using, it might present you will an idea of which device has a bootable partition on it. The choices should be any tape drive in the system regardless of if it has a tape in it or not, any CD device that has a bootable CD in it, and any disk drive that the firmware has access to. This does not include fibre channel disks, or disk arrays on most systems.\n\nOnce the search completes you will be presented with possible choices to boot from. Choose the CDROM device, and issue the command "boot p0" (assuming "p0" points to the CDROM device). Now the system will ask if you want to interact with IPL. Answer no at this point.\n\nTIP: This is the point where you can boot the machine to single user mode if you need to. Answer "Y" and once you get a prompt issue the command "hpux -is". This will bring you to single user mode. There is no need to issue the "sea" command to do this, just type boot (on older systems "boot pri isl").\n\nThe system should now boot from the CD. After loading and checking out the hardware installed it will show you a curses screen similar to the following.\n\nFrom this point you want to choose "Install HPUX", and "OK". To move around on the screen you can use the arrow keys or the tab key. To select a check box use the space bar. To select "OK", use the enter key.\n\nNow you will be brought to a menu that asks how you want to install. Choose "Advanced Installation" and "OK". Now you will be at the main installation screen and are ready to choose the software you want to install.
Used as a cache of recently read/written data for reuse.\nUsed to hold ‘read-ahead’ and ‘write-behind’ data to essentially speed up IO rates seen by application.\nBut to do read-ahead in addition to applications already intense IO demands the kernel is actually doing more IO than just what the application is doing, hence one needs more IO bandwidth to benefit. So if one does not have enough drives and controllers then one will not see a big gain when using BufferCache, unless it is large enough to hold a significant portion of the dataset.\nSpecial considerations apply to HP-UXBufferCache.
[[Buffsize]]{{{=sys1=<integer Default=16385|estimate to use the estimate utility>}}}\nSpecifies the physical record size + 1, in [[Words]] of a GINO (Nastran internal IO) block.\n[[Buffsize]] is chosen for compromise between database access speed and storage requirements. An excessively large [[Buffsize]] can result in more IO data transferred and wasted space in the database for smaller problems; an excessively small [[Buffsize]] can result in increases IO counts for larger problems.\nSuggested Values in terms of DegreesOfFreedom:\n{{{\n DOF < 100000 8193\n100000 < DOF < 200000 16385\n400000 < DOF < 1000000 32769\n DOF > 1000000 65537\n}}}\nAlternatively, can be evaluated by using the {{{estimate}}} utility:\n{{{\n<install_dir>/bin/msc<version> estimate <model_name>\n}}}
From a virtual disk, build an HFS filesystem:\n{{{\n# newfs -F hfs -L -b 65536 -f 8192 -c 32 -t 32 -o largefiles /dev/vg01/rlvol1\n}}}\nwith:\n * HFS file system (-F hfs),\n * Directory entries (file names) up to MAXNAMLEN (255) bytes long (-L),\n * Block size (-b 65536, i.e. 64K blocks),\n * Fragment size (-f 8192, i.e. 8K),\n * Number of disk cylinders per cylinder-group (-c 32),\n * Number of tracks per cylinder (-t 32),\n on a stripe, the previous two switches (-c and -t) are arbitrary. \n Here they are set to the maximum to get the most data transfer before an interrupt.\n *Large (>2GB) file support (-o largefiles),\n \nDo not change the 10% default {{{newfs -m free_space_percent}}} option\n\nNext task is TuningMountingOptionsHFSFileSystem.
LVM is used to stripe a file system across multiple disks.\nIt is easier to reconfigure logical volumes by including all disks tasked with the same purpose into a single volume group instead of having one volume group per file system.\n\nVolume groups are created using {{{vgcreate}}} via the command line (a simple script could do the whole task).\n{{{\n# mkdir /dev/vg01\n# mknod /dev/vg01/group c 64 0x010000\n}}}\nvg01 is the volume group name.\nThe second command makes the device file which the volume manager uses to access the volume group. \nThe minor device number can be from 0x000000 to 0x090000 for a default kernel. \nHowever one can increase the number of volume groups allowed on a system by using the kernel parameter (tunable) {{{maxvgs}}}. It is best to keep the name of the volume group similar to its minor device number so as to make any future recovery easier. The name of the file must be group, and it is a character device (c). The major number is always 64. \nPrepare the disks to be included in a volume group:\n{{{\n# pvcreate /dev/dsk/c4t1d0\n}}}\nHere /dev/dsk/c4t1d0 is a disk drive on the system. This command will need to be run for all disks in the volume group. The command pvcreate reserves an area on the disk for volume group information.\nFor the volume group creation, in the next command, $DISK is a shell variable listing all the disk device files desired in the volume group (e.g. /dev/dsk/c4t1d0). This can get lengthy to do on the command line for a machine with a large number of disks.\n{{{\n# vgcreate -e 10000 -p 128 -s 64 vg01 $DISK\n}}}\nwith:\n * number of physical extents on each disk (-e 10000), (this will now scale automatically with disk size)\n * number of physical disks allowed in the volume group (-p 128),\n * and size of extents (-s 64).\nAn extent is the logical unit of the volume group. Logical volumes must be a multiple of the extent size. The number of extents given to the vgcreate command should be large enough so that the entire disk can be mapped given the size of the extents. There is a small penalty in disk and memory utilization in making this number too big. The size of an extent has no impact on disk performance, however setting it too high can waste disk space. 64MB is a good trade off.\nFrom the volume group a logical volume space is carved out first by creating the volume without specifying any size:\n{{{\n# lvcreate -i 8 -I 64 -n lvol1 vg01\n}}}\nwith:\n * An 8-disk stripe (-i 8),\n * A 64K stripe size (-I 64), (optimum)\n * the name of the logical volume (-n lvol1), (arbitrary)\n * and the volume group it should belong to (vg01).\n\nSize logical volume:\n{{{\n# lvextend -l 2420 /dev/vg01/lvol1 $STRIPE\n}}}\n * How large the logical volume should be in physical extents (-l 2420).\n (This can also be given in megabytes by using the -L switch.)\n * shell variable $STRIPE lists the disk device files in the volume group to use for this logical volume.\n Stripe across controllers as well as disks. So assuming 4 controllers $STRIPE would look like:\n{{{\n# STRIPE='/dev/dsk/c4t1d0 /dev/dsk/c5t1d0 /dev/dsk/c6t1d0 /dev/dsk/c7t1d0 \s\n/dev/dsk/c4t2d0 /dev/dsk/c5t2d0 /dev/dsk/c6t2d0 /dev/dsk/c7t2d0'\n}}}\nWithout giving {{{lvextend}}} the disks to use, or giving {{{lvcreate}}} a size, the volume manager will allocate space starting at the first disk added to the volume group by {{{vgcreate}}}. So if only an 8-disk volume group was created, and disks were added in above order, this step is unnecessary. What this command will do is to allocate one logical extent from the first disk, then one from the second and so on until the number of logical extents has been reached. This command will round the number of logical extents up to the next multiple of disks in the stripe. This will ensure that the logical volume is evenly spread across all disks.\nNext task is BuildingHFSFileSystem or BuildingVxFSFileSystem.
Building a VxFS file system is much simpler then HFS. There aren't as many options. First build the file system itself with 8K block size and large files support:\n{{{\nnewfs -F vxfs -b 8192 -o largefiles /dev/vg01/rlvol1\n}}}\nIf using HPUX 11.0 then there is one more step. \nMount the file system without any switches.\n{{{\nmount /dev/vg01/lvol1 /scratch\n}}}\nFor VxFS 3.1, file system layout is version 3. \nSince 11.0 defaults to VxFS 3.1, upgrade file system layout to version 4:\n{{{ \n/sbin/fs/vxfs3.3/vxupgrade -n 4 /scratch\n}}}\nTune file system and remount with VxFS options: TuningMountingOptionsVxFSFileSystem.
Creating BulletPoints is simple.\n* Just add an asterisk\n* at the beginning of a line.\n** If you want to create sub-bullets\n** start the line with two asterisks\n*** And if you want yet another level\n*** use three asterisks\n* Edit this tiddler to see how it's done\n* You can also do NumberedBulletPoints
This section describes specific settings for optimal CAE performance on HP-UX and Linux systems for some of the following applications:\nABAQUS Inc. [[Abaqus]] *\nACUSIM Software AcuSolve *\nADINA R & D Inc. [[ADINA]]\nAltair Engineering OptiStruct\nAltair Engineering (formerly Mecalog Group) [[Radioss]] *\nAnsys Inc. [[Ansys]] *\nAnsys Inc. [[CFX]] *\nAVL [[Fire]] *\nCD-adapco Group Star-CD *\nESI Group PAM-Crash *\nESI Group PAM-Flow *\nESI Group [[CFD-ACE+]]\nEXA [[PowerFLOW]] *\nFluent Inc. [[Fidap]] *\nFluent Inc. [[Fluent]] *\nLSTC LS-DYNA *\nMAGMA Giessereitechnologie GmbH [[MAGMASOFT]] *\nMetacomp Technologies [[CFD++]] *\nMSCSoftware MSCDytran\nMSCSoftware MSCManufacturing\nMSCSoftware MSCMarc *\nMSCSoftware MDNastran *\nMSCSoftware MSCNastran *\nMSCSoftware MSCSuperForge\nMSCSoftware MSCSuperForm\nNewmerical Technologies International [[FENSAP]]\nNoran Engineering, Inc. [[NEiNastran]]\nRicardo [[WAVE, VECTIS, VALDYN, PISDYN, ENGDYN, SABR, RINGPAK, FEARCE]] \nSoftware Cradle SCTetra\nThe MacNeal Group, LLC (tMG) [[NASTRAN-xMG]]\nThe University of Texas at Austin / CDH [[AMLS]] *\nTNO [[MADYMO]] *\nUGS NXNastran *\n(*) Uses HP-MPI to achieve parallel performance.\nSettings relative to these applications run parameters themselves may in some cases be found in separate standalone guides upon inquiry with the respective HP Strategic Alliance Manager.
CFD++ is available from [[Metacomp Technologies|http://www.metacomptech.com]]\nHP Strategic Alliance Manager for Metacomp Technologies - Jeff Wall\nHP Technical Support for CFD++ - OlivierSchreiber\nUses HP-MPI to achieve parallel performance.
CFD-ACE+ is available from ESI Group\nHP Strategic Alliance Manager for ESI - Lee Fisher\nUses HP-MPI to achieve parallel performance.
CFX is available from [[Ansys Inc.|http://www.ansys.com]]\nHP Strategic Alliance Manager for ANSYS Brian Lowe\nUses HP-MPI to achieve parallel performance.
Caliper – Source Level Profiling Tool\nTool: caliper\nWhere: /opt/caliper/bin/caliper\nDescription:\nMeasure and report application profiling data\nFeatures:\nNo special preparation of measured program\nUses Itanium’s PMU counters for some metrics\nOther metrics are collected by probe code inserted into the application by caliper\nApplication can be written in C, C++, Fortran and assembly or combination of these\n\nCaliper – Examples of Usage …\nData Collection Mode:\ncaliper config_file [collect_opts] [report_opts] program [program_args]\nconfiguration files: total_cpu, cgprof, fprof, pbo dcache_miss, dtlb_miss etc.\nReport Only Mode\ncaliper report –d datafile [report_opts]\nreport formats: ascii, html or both\nInformation only Mode\ncaliper info [info_options]\ncaliper total_cpu –process=all a.out\nmeasure and report total instructions, nops and cpu cycles expended from all processes\ncaliper total_cpu –o total_cpu.report a.out\ncaliper cgprof a.out\nmeasure and report an extended call graph profile\ncaliper pbo a.out\nrun, measure and produce ‘flow.data’ file which can be used by compiler (+Oprofile=use) to generate a highly optimized code\ncaliper fprof –process=all –module-exclude=libc –o fprof.report
With so many choices give by Hewlett-Packard on what to install, it can be difficult to weed it all out. We are asking all of our partners to only install what we recommend. If anything else is needed, we will evaluate the patch or product and provide it to them. Our goal is to have all technical partners using the same environment, which will be replicated in house. Quite a bit of testing goes into this recommendation, and we will be using it on our own machines, however, there is a real possibility that we won't catch everything. Therefore, if a partner needs something that is not in the recommended list, please inform MOPS or Todd Kirkham and let us know so that this additional patch or software can be incorporated into our environment, and eventually all of our partners. It would be advantageous if this software could be tested here before it is installed at the partner site, however, we do recognized that sometimes it is necessary to fix the problem quickly. Please don't forget to contact us should you need to do this.\n\nThe current recommended software to be loaded on systems will be located at the web site http://techmktg.rsn.hp.com/mops/recommendedsw.html for internal HP partners and eventually http://techservers.hp.com for our external partners. This page will be updated every time we move to a new release. It is hoped that this will happen in the near future, however the URL may change.\n\nI have compiled a list of definitions of some of the common names of releases. This is in my own words, so they may not correspond the actual HP definitions. If you have something to add, or a correction to make, please contact me.\n\nAn Extension Pak is a bundle of patches that is meant to go on top of HPUX 11.0. Extension Paks are cumulative in that a current Extension Pak contains not only new patches, but also all patches from previous Extension Pak that have not been superseded. Extension Paks are released every quarter (or at least that's the goal). Naming of Extension Paks correspond to their scheduled release date. 9812 for instance was scheduled to release in December 1998. It was actually release in February 1999, however the name was not changed.\n\nA Quality Pak is a new bundle of patches originated by TCD. This bundle of patches is meant to serve as a patch plateau. Normally when a customer calls our support centers, the first thing the support center does is asks them to install all the latest patches and call back if the problem doesn't go away. The way the Quality Paks are supposed to work, is that the support center, once hearing that a Quality Pak is installed, must work on the problem immediately. They cannot ask that any additional patches be installed, unless the Quality Pak is out of date. The First Quality Pak is due to be released in June 2000. They are scheduled to be released every 6 months. We have some pull in the makeup of this patch bundle since it is created by TCD. If you would like to see something in the next Quality Pak, contact either Michael Ehrig or myself. We are the Server Technical Marketing Lab's representatives into the Quality Pak team.\n\nDART releases, are to Extension Paks, what compilers are to the OS. DARTs contain updates to compilers, and other peripheral software to the operating system. They are generally issued every quarter, and are named sequentially. Occasionally a release date for a DART will slip so far, that its changes will be incorporated into the next release and the number will be dropped. So there aren't DARTs for every number.\n\nGolden Bundle is a new type of patch bundle. These will start to be released 6 months after 11.11 (or 11.i) is released. They will incorporate both the DART releases and the Quality Paks. HP is recommending to customers and partners that don't need new functionality available in Extension Paks and DARTs to use the Golden Bundles. They are scheduled to be release every 6 months just like the Quality Paks, but they incorporate the entire environment. It is hoped that once this process starts, partners from all divisions of the company will test the bundle before it is released. This is similar to what we are trying to do as a department. That is, get all of our partners as well as our own machines running identical versions of all software. Not only OS patches, but also compilers and compiler patches. Golden Bundles will require that each division (business computing and technical computing, both workstation and server) work together to provide a common set of tools and patches that will be used by most customers. It will be difficult to implement, however the effort will pay huge dividends in customer satisfaction. We will need to be on top of this from day one, to make sure that customers can choose to use the Golden Bundles with our partners products without trouble.\n\nOE - Operating Environment will be new to 11i. This paradigm is meant to simplify choosing what to install on a new machine. There will be 5 OE's for each minor release of HPUX 11i. They are the Mission Critical OE, the Enterprise OE, the Internet OE, the Technical OE, and the Basic OE. The Mission Critical OE is for MC/ServiceGuard installations. The Enterprise OE is meant for business applications running on servers. The Internet OE is for ISPs and ASPs. The Technical OE includes the basic technical bundles that we use today for most of our partners. It is meant for machines running technical applications. The final OE (Basic) is installed by default for all of the above OEs. It contains the various network drivers, CDE environment, as well as the very basic tools for booting and running HPUX 11i.
Introduction
* IOzone - IOBandwidth\n* netPIPE - NetworkLatency and NetworkBandwidth evaluation\n* [[STREAM]] - MemoryBandwidth evaluation\n
A state where all data is written or read directly from disk and does not pass through BufferCache. In most cases this is not a good thing as it defeats the read-ahead or flush-behind functionality available with BufferCache, however there are times when this is the best solution. One case for DirectIO would be for a very large file and a very small BufferCache because Buffercache IO is limited to 64KB/request and DirectIO can go up to 1MB/request. DirectIO would also be beneficial when doing purely sequential IO where no caching can happen. DirectIO mode can be entered in two ways. It can be forced either by a mount option {{{mincache=direct}}} or by the application itself using the VX_DIRECT flag on each file it opens. Or it can be done by discovered DirectIO. VxFS tries to determine when IO access to the file system will benefit by using DirectIO. This is called discovered DirectIO. These two tunings give VxFS additional hints for doing DirectIO and what the largest DirectIO operation should be.
This guide is using a [[self contained hypertext document tool|http://www.tiddlywiki.com]], version <<version>>\n\nClick on a blue, boldfaced word to make its guide entry appear. Move the mouse pointer to the right of its' title to reveal a 'close' button. The menu at the left takes you to the most important entries. Words that are blue and underlined like earlier in this paragraph) are links to off-site resources. \n\n\nA [[tutorial|http://www.blogjones.com/TiddlyWikiTutorial.html]] and an [[overview|http://euicho.com/index.php?p=123]] are available. See also a local GettingStarted and HowTo.\nIf you want to change the information, download this page directly to your harddrive by right-clicking [[this link|http://techmktg.rsn.hp.com/people/oliviers/caeTuningGuide.html]] select "Save link as...", start editing it, save it and email it back to OlivierSchreiber to merge back with [[his copy|http://techmktg.rsn.hp.com/people/oliviers/caeTuningGuide.html]].\nThank you in advance.
<<exportTiddlers inline>>
/***\n''Export Tiddlers Plugin for TiddlyWiki version 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#ExportTiddlersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen many people edit copies of the same TiddlyWiki document, the ability to easily copy and share these changes so they can then be redistributed to the entire group is very important. This ability is also very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\nExportTiddlersPlugin let you ''select and extract tiddlers from your ~TiddlyWiki documents and save them to a local file'' or a remote server (requires installation of compatible server-side scripting, still under development...). An interactive control panel lets you specify a destination, and then select which tiddlers to export. A convenient 'selection filter' helps you pick desired tiddlers by specifying a combination of modification dates, tags, or tiddler text to be matched or excluded. ''Tiddler data can be output as ~TiddlyWiki "storeArea ~DIVs" that can be imported into another ~TiddlyWiki or as ~RSS-compatible XML that can be published for RSS syndication.''\n\n!!!!!Inline interface (live)\n<<<\n<<exportTiddlers inline>>\n<<<\n!!!!!Usage\n<<<\nOptional "special tiddlers" used by this plugin:\n* SiteUrl^^\nURL for official server-published version of document being viewed\ndefault: //none//^^\n* SiteHost^^\nhost name/address for remote server (e.g., "www.server.com" or "192.168.1.27")\ndefault: //none//^^\n* SitePost^^\nremote path/filename for submitting changes (e.g., "/cgi-bin/submit.cgi")\ndefault: //none//^^\n* SiteParams^^\narguments (if any) for server-side receiving script\ndefault: //none//^^\n* SiteID^^\nusername or other authorization identifier for login-controlled access to remote server\ndefault: current TiddlyWiki username (e.g., "YourName")^^\n* SiteDate^^\nstored date/time stamp for most recent published version of document\ndefault: current document.modified value (i.e., the 'file date')^^\n<<<\n!!!!!Example\n<<<\n<<exportTiddlers>>\n<<<\n!!!!!Installation\n<<<\nImport (or copy/paste) the following tiddlers into your document:\n''ExportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < exportTiddlers > >" macro^^\n<<<\n!!!!!Revision History\n<<<\n''2006.03.29 [2.1.3]''^^\nadded calls to convertUnicodeToUTF8() for generated output, so it better handles international characters.\n''2006.02.12 [2.1.2]''^^\nadded var to unintended global 'tags' in matchTags(). Avoids FF1501 bug when filtering by tags. (based on report by TedPavlic)\n''2006.02.04 [2.1.1]''^^\nadded var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.02.02 [2.1.0]''^^\nAdded support for output of complete TiddlyWiki documents. Let's you use ExportTiddlers to generate 'starter' documents from selected tiddlers.^^\n''2006.01.21 [2.0.1]''^^\nDefer initial panel creation and only register a notification function when panel first is created\nin saveChanges 'hijack', create panel as needed. Note: if window.event is not available to identify the click location, the export panel is positioned relative to the 'tiddlerDisplay' element of the TW document.\n^^\n''2005.12.27 [2.0.0]''^^\nUpdate for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n^^\n''2005.12.24 [0.9.5]''^^\nMinor adjustments to CSS to force correct link colors regardless of TW stylesheet selection\n^^\n''2005.12.16 [0.9.4]''^^\nDynamically create/remove exportPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.\n^^\n''2005.11.15 [0.9.2]''^^\nadded non-Ajax post function to bypass javascript security restrictions on cross-domain I/O. Moved AJAX functions to separate tiddler (no longer needed here). Generalized HTTP server to support UnaWiki servers\n^^\n+++[previous releases...]\n''2005.11.08 [0.9.1]''^^\nmoved HTML, CSS and control initialization into exportInit() function and call from macro handler instead of at load time. This allows exportPanel to be placed within the same containing element as the "export tiddlers" button, so that relative positioning can be achieved.\n^^\n''2005.10.28 [0.9.0]''^^\nadded 'select opened tiddlers' feature\nBased on a suggestion by Geoff Slocock\n^^\n''2005.10.24 [0.8.3]''^^\nCorrected hijack of 'save changes' when using http:\n^^\n''2005.10.18 [0.8.2]''^^\nadded AJAX functions\n^^\n''2005.10.18 [0.8.1]''^^\nCorrected timezone handling when filtering for date ranges.\nImproved error checking/reporting for invalid filter values and filters that don't match any tiddlers.\nExporting localfile-to-localfile is working for IE and FF\nExporting server-to-localfile works in IE (after ActiveX warnings), but has security issues in FF\nCross-domain exporting (localfile/server-to-server) is under development\nCookies to remember filter settings - coming soon\nMore style tweaks, minor text changes and some assorted layout cleanup.\n^^\n''2005.10.17 [0.8.0]''^^\nFirst pre-release.\n^^\n''2005.10.16 [0.7.0]''^^\nfilter by tags\n^^\n''2005.10.15 [0.6.0]''^^\nfilter by title/text\n^^\n''2005.10.14 [0.5.0]''^^\nexport to local file (DIV or XML)\n^^\n''2005.10.14 [0.4.0]''^^\nfilter by start/end date\n^^\n''2005.10.13 [0.3.0]''^^\npanel interaction\n^^\n''2005.10.11 [0.2.0]''^^\npanel layout\n^^\n''2005.10.10 [0.1.0]''^^\ncode framework\n^^\n''2005.10.09 [0.0.0]''^^\ndevelopment started\n^^\n===\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // +++[version]\n//{{{\nversion.extensions.exportTiddlers = {major: 2, minor: 1, revision: 3, date: new Date(2006,3,29)};\n//}}}\n// //===\n\n// // +++[macro handler]\n//{{{\nconfig.macros.exportTiddlers = {\n label: "export tiddlers",\n prompt: "Copy selected tiddlers to an export document",\n datetimefmt: "0MM/0DD/YYYY 0hh:0mm:0ss" // for "filter date/time" edit fields\n};\n\nconfig.macros.exportTiddlers.handler = function(place,macroName,params) {\n if (params[0]!="inline")\n { createTiddlyButton(place,this.label,this.prompt,onClickExportMenu); return; }\n var panel=createExportPanel(place);\n panel.style.position="static";\n panel.style.display="block";\n}\n\nfunction createExportPanel(place) {\n var panel=document.getElementById("exportPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.exportTiddlers.css,"exportTiddlers");\n panel=createTiddlyElement(place,"span","exportPanel",null,null)\n panel.innerHTML=config.macros.exportTiddlers.html;\n exportShowPanel(document.location.protocol);\n exportInitFilter();\n refreshExportList(0);\n store.addNotification(null,refreshExportList); // refresh listbox after every tiddler change\n return panel;\n}\n\nfunction onClickExportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("exportPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createExportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n// //===\n\n// // +++[Hijack saveChanges] diverts 'notFileUrlError' to display export control panel instead\n//{{{\nwindow.coreSaveChanges=window.saveChanges;\nwindow.saveChanges = function()\n{\n if (document.location.protocol=="file:") { coreSaveChanges(); return; }\n var e = window.event;\n var parent=e?resolveTarget(e).parentNode:document.body;\n var panel = document.getElementById("exportPanel");\n if (panel==undefined || panel.parentNode!=parent) panel=createExportPanel(parent);\n exportShowPanel(document.location.protocol);\n if (parent==document.body) { panel.style.left="30%"; panel.style.top="30%"; }\n panel.style.display = "block" ;\n}\n//}}}\n// //===\n\n// // +++[IE needs explicit scoping] for functions called by browser events\n//{{{\nwindow.onClickExportMenu=onClickExportMenu;\nwindow.onClickExportButton=onClickExportButton;\nwindow.exportShowPanel=exportShowPanel;\nwindow.exportShowFilterFields=exportShowFilterFields;\nwindow.refreshExportList=refreshExportList;\n//}}}\n// //===\n\n// // +++[CSS] for floating export control panel\n//{{{\nconfig.macros.exportTiddlers.css = '\s\n#exportPanel {\s\n display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#exportPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#exportPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#exportPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#exportPanel .rad { width:auto; }\s\n#exportPanel .chk { width:auto; }\s\n#exportPanel .btn { width:auto; }\s\n#exportPanel .btn1 { width:98%; }\s\n#exportPanel .btn2 { width:48%; }\s\n#exportPanel .btn3 { width:32%; }\s\n#exportPanel .btn4 { width:24%; }\s\n#exportPanel .btn5 { width:19%; }\s\n';\n//}}}\n// //===\n\n// // +++[HTML] for export control panel interface\n//{{{\nconfig.macros.exportTiddlers.html = '\s\n<!-- output target and format -->\s\n<table cellpadding="0" cellspacing="0"><tr><td width=50%>\s\n export to\s\n <select size=1 id="exportTo" onchange="exportShowPanel(this.value);">\s\n <option value="file:" SELECTED>this computer</option>\s\n <option value="http:">web server (http)</option>\s\n <option value="https:">secure web server (https)</option>\s\n <option value="ftp:">file server (ftp)</option>\s\n </select>\s\n</td><td width=50%>\s\n output format\s\n <select id="exportFormat" size=1>\s\n <option value="DIV">TiddlyWiki export file</option>\s\n <option value="TW">TiddlyWiki document</option>\s\n <option value="XML">RSS feed (XML)</option>\s\n </select>\s\n</td></tr></table>\s\n\s\n<!-- export to local file -->\s\n<div id="exportLocalPanel" style="margin-bottom:5px;margin-top:5px;">\s\nlocal path/filename<br>\s\n<input type="file" id="exportFilename" size=56 style="width:100%"><br>\s\n</div><!--panel-->\s\n\s\n<!-- export to http server -->\s\n<div id="exportHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;">\s\ndocument URL<br>\s\n<input type="text" id="exportHTTPSiteURL" onfocus="this.select()"><br>\s\nserver script / parameters<br>\s\n<input type="text" id="exportHTTPServerURL" onfocus="this.select()"><br>\s\n</div><!--panel-->\s\n\s\n<!-- export to ftp server -->\s\n<div id="exportFTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;">\s\n<table cellpadding="0" cellspacing="0" width="33%"><tr valign="top"><td>\s\n host server<br>\s\n <input type="text" id="exportFTPHost" onfocus="this.select()"><br>\s\n</td><td width="33%">\s\n username<br>\s\n <input type="text" id="exportFTPID" onfocus="this.select()"><br>\s\n</td><td width="33%">\s\n password<br>\s\n <input type="password" id="exportFTPPW" onfocus="this.select()"><br>\s\n</td></tr></table>\s\nFTP path/filename<br>\s\n<input type="text" id="exportFTPFilename" onfocus="this.select()"><br>\s\n</div><!--panel-->\s\n\s\n<!-- list of tiddlers -->\s\n<table><tr align="left"><td>\s\n select:\s\n <a href="JavaScript:;" id="exportSelectAll"\s\n onclick="onClickExportButton(this)" title="select all tiddlers">\s\n &nbsp;all&nbsp;</a>\s\n <a href="JavaScript:;" id="exportSelectChanges"\s\n onclick="onClickExportButton(this)" title="select tiddlers changed since last save">\s\n &nbsp;changes&nbsp;</a> \s\n <a href="JavaScript:;" id="exportSelectOpened"\s\n onclick="onClickExportButton(this)" title="select tiddlers currently being displayed">\s\n &nbsp;opened&nbsp;</a> \s\n <a href="JavaScript:;" id="exportToggleFilter"\s\n onclick="onClickExportButton(this)" title="show/hide selection filter">\s\n &nbsp;filter&nbsp;</a> \s\n</td><td align="right">\s\n <a href="JavaScript:;" id="exportListSmaller"\s\n onclick="onClickExportButton(this)" title="reduce list size">\s\n &nbsp;&#150;&nbsp;</a>\s\n <a href="JavaScript:;" id="exportListLarger"\s\n onclick="onClickExportButton(this)" title="increase list size">\s\n &nbsp;+&nbsp;</a>\s\n</td></tr></table>\s\n<select id="exportList" multiple size="10" style="margin-bottom:5px;"\s\n onchange="refreshExportList(this.selectedIndex)">\s\n</select><br>\s\n\s\n<!-- selection filter -->\s\n<div id="exportFilterPanel" style="display:none">\s\n<table><tr align="left"><td>\s\n selection filter\s\n</td><td align="right">\s\n <a href="JavaScript:;" id="exportHideFilter"\s\n onclick="onClickExportButton(this)" title="hide selection filter">hide</a>\s\n</td></tr></table>\s\n<div class="box">\s\n<input type="checkbox" class="chk" id="exportFilterStart" value="1"\s\n onclick="exportShowFilterFields(this)"> starting date/time<br>\s\n<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\s\n <select size=1 id="exportFilterStartBy" onchange="exportShowFilterFields(this);">\s\n <option value="0">today</option>\s\n <option value="1">yesterday</option>\s\n <option value="7">a week ago</option>\s\n <option value="30">a month ago</option>\s\n <option value="site">SiteDate</option>\s\n <option value="file">file date</option>\s\n <option value="other">other (mm/dd/yyyy hh:mm)</option>\s\n </select>\s\n</td><td width="50%">\s\n <input type="text" id="exportStartDate" onfocus="this.select()"\s\n onchange="document.getElementById(\s'exportFilterStartBy\s').value=\s'other\s';">\s\n</td></tr></table>\s\n<input type="checkbox" class="chk" id="exportFilterEnd" value="1"\s\n onclick="exportShowFilterFields(this)"> ending date/time<br>\s\n<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\s\n <select size=1 id="exportFilterEndBy" onchange="exportShowFilterFields(this);">\s\n <option value="0">today</option>\s\n <option value="1">yesterday</option>\s\n <option value="7">a week ago</option>\s\n <option value="30">a month ago</option>\s\n <option value="site">SiteDate</option>\s\n <option value="file">file date</option>\s\n <option value="other">other (mm/dd/yyyy hh:mm)</option>\s\n </select>\s\n</td><td width="50%">\s\n <input type="text" id="exportEndDate" onfocus="this.select()"\s\n onchange="document.getElementById(\s'exportFilterEndBy\s').value=\s'other\s';">\s\n</td></tr></table>\s\n<input type="checkbox" class="chk" id=exportFilterTags value="1"\s\n onclick="exportShowFilterFields(this)"> match tags<br>\s\n<input type="text" id="exportTags" onfocus="this.select()">\s\n<input type="checkbox" class="chk" id=exportFilterText value="1"\s\n onclick="exportShowFilterFields(this)"> match titles/tiddler text<br>\s\n<input type="text" id="exportText" onfocus="this.select()">\s\n</div> <!--box-->\s\n</div> <!--panel-->\s\n\s\n<!-- action buttons -->\s\n<div style="text-align:center">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportFilter" value="apply filter">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportStart" value="export tiddlers">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportClose" value="close">\s\n</div><!--center-->\s\n';\n//}}}\n// //===\n\n// // +++[initialize interface]>\n// // +++[exportShowPanel(which)]\n//{{{\nfunction exportShowPanel(which) {\n var index=0; var panel='exportLocalPanel';\n switch (which) {\n case 'file:':\n case undefined:\n index=0; panel='exportLocalPanel'; break;\n case 'http:':\n index=1; panel='exportHTTPPanel'; break;\n case 'https:':\n index=2; panel='exportHTTPPanel'; break;\n case 'ftp:':\n index=3; panel='exportFTPPanel'; break;\n default:\n alert("Sorry, export to "+which+" is not yet available");\n break;\n }\n exportInitPanel(which);\n document.getElementById('exportTo').selectedIndex=index;\n document.getElementById('exportLocalPanel').style.display='none';\n document.getElementById('exportHTTPPanel').style.display='none';\n document.getElementById('exportFTPPanel').style.display='none';\n document.getElementById(panel).style.display='block';\n}\n//}}}\n// //===\n\n// // +++[exportInitPanel(which)]\n//{{{\nfunction exportInitPanel(which) {\n switch (which) {\n case "file:": // LOCAL EXPORT PANEL: file/path:\n // ** no init - security issues in IE **\n break;\n case "http:": // WEB EXPORT PANEL\n case "https:": // SECURE WEB EXPORT PANEL\n // url\n var siteURL=store.getTiddlerText("SiteUrl");\n if (store.tiddlerExists("unawiki_download")) {\n var theURL=store.getTiddlerText("unawiki_download");\n theURL=theURL.replace(/\s[\s[download\s|/,'').replace(/\s]\s]/,'');\n var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";\n var theHost=store.getTiddlerText(title);\n if (!theHost || !theHost.length) theHost=document.location.host;\n if (!theHost || !theHost.length) theHost=title;\n siteURL=which+"//"+theHost+theURL\n }\n if (!siteURL) siteURL="SiteUrl";\n document.getElementById("exportHTTPSiteURL").value=siteURL;;\n // server script/params\n var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";\n var theHost=store.getTiddlerText(title);\n if (!theHost || !theHost.length) theHost=document.location.host;\n if (!theHost || !theHost.length) theHost=title;\n // get POST\n var title=(store.tiddlerExists("unawiki_post"))?"unawiki_post":"SitePost";\n var thePost=store.getTiddlerText(title);\n if (!thePost || !thePost.length) thePost="/"+title;\n // get PARAMS\n var title=(store.tiddlerExists("unawiki_params"))?"unawiki_params":"SiteParams";\n var theParams=store.getTiddlerText(title);\n if (!theParams|| !theParams.length) theParams=title;\n var serverURL = which+"//"+theHost+thePost+"?"+theParams;\n document.getElementById("exportHTTPServerURL").value=serverURL;\n break;\n case "ftp:": // FTP EXPORT PANEL\n // host\n var siteHost=store.getTiddlerText("SiteHost");\n if (!siteHost || !siteHost.length) siteHost=document.location.host;\n if (!siteHost || !siteHost.length) siteHost="SiteHost";\n document.getElementById("exportFTPHost").value=siteHost;\n // username\n var siteID=store.getTiddlerText("SiteID");\n if (!siteID || !siteID.length) siteID=config.options.txtUserName;\n document.getElementById("exportFTPID").value=siteID;\n // password\n document.getElementById("exportFTPPW").value="";\n // file/path\n document.getElementById("exportFTPFilename").value="";\n break;\n }\n}\n//}}}\n// //===\n\n// // +++[exportInitFilter()]\n//{{{\nfunction exportInitFilter() {\n // TBD: persistent settings via local cookies\n // start date\n document.getElementById("exportFilterStart").checked=false;\n document.getElementById("exportStartDate").value="";\n // end date\n document.getElementById("exportFilterEnd").checked=false;\n document.getElementById("exportEndDate").value="";\n // tags\n document.getElementById("exportFilterTags").checked=false;\n document.getElementById("exportTags").value="not excludeExport";\n // text\n document.getElementById("exportFilterText").checked=false;\n document.getElementById("exportText").value="";\n // show/hide filter input fields\n exportShowFilterFields();\n}\n//}}}\n// //===\n\n// // +++[exportShowFilterFields(which)]\n//{{{\nfunction exportShowFilterFields(which) {\n var show;\n\n show=document.getElementById('exportFilterStart').checked;\n document.getElementById('exportFilterStartBy').style.display=show?"block":"none";\n document.getElementById('exportStartDate').style.display=show?"block":"none";\n var val=document.getElementById('exportFilterStartBy').value;\n document.getElementById('exportStartDate').value\n =getFilterDate(val,'exportStartDate').formatString(config.macros.exportTiddlers.datetimefmt);\n if (which && (which.id=='exportFilterStartBy') && (val=='other'))\n document.getElementById('exportStartDate').focus();\n\n show=document.getElementById('exportFilterEnd').checked;\n document.getElementById('exportFilterEndBy').style.display=show?"block":"none";\n document.getElementById('exportEndDate').style.display=show?"block":"none";\n var val=document.getElementById('exportFilterEndBy').value;\n document.getElementById('exportEndDate').value\n =getFilterDate(val,'exportEndDate').formatString(config.macros.exportTiddlers.datetimefmt);\n if (which && (which.id=='exportFilterEndBy') && (val=='other'))\n document.getElementById('exportEndDate').focus();\n\n show=document.getElementById('exportFilterTags').checked;\n document.getElementById('exportTags').style.display=show?"block":"none";\n\n show=document.getElementById('exportFilterText').checked;\n document.getElementById('exportText').style.display=show?"block":"none";\n}\n//}}}\n// //===\n// //===\n\n// // +++[onClickExportButton(which): control interactions]\n//{{{\nfunction onClickExportButton(which)\n{\n // DEBUG alert(which.id);\n var theList=document.getElementById('exportList'); if (!theList) return;\n var count = 0;\n var total = store.getTiddlers('title').length;\n switch (which.id)\n {\n case 'exportFilter':\n count=filterExportList();\n var panel=document.getElementById('exportFilterPanel');\n if (count==-1) { panel.style.display='block'; break; }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage("filtered "+theList.options[0].text);\n if (count==0) { alert("No tiddlers were selected"); panel.style.display='block'; }\n break;\n case 'exportStart':\n exportTiddlers();\n break;\n case 'exportHideFilter':\n case 'exportToggleFilter':\n var panel=document.getElementById('exportFilterPanel')\n panel.style.display=(panel.style.display=='block')?'none':'block';\n break;\n case 'exportSelectChanges':\n var lastmod=new Date(document.lastModified);\n for (var t = 0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;\n theList.options[t].selected=(tiddler.modified>lastmod);\n count += (tiddler.modified>lastmod)?1:0;\n }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n if (count==0) alert("There are no unsaved changes");\n break;\n case 'exportSelectAll':\n for (var t = 0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count += 1;\n }\n theList.options[0].text=formatExportListHeader(count,count);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n break;\n case 'exportSelectOpened':\n for (var t = 0; t < theList.options.length; t++) theList.options[t].selected=false;\n var tiddlerDisplay = document.getElementById("tiddlerDisplay");\n for (var t=0;t<tiddlerDisplay.childNodes.length;t++) {\n var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);\n for (var i = 0; i < theList.options.length; i++) {\n if (theList.options[i].value!=tiddler) continue;\n theList.options[i].selected=true; count++; break;\n }\n }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n if (count==0) alert("There are no tiddlers currently opened");\n break;\n case 'exportListSmaller': // decrease current listbox size\n var min=5;\n theList.size-=(theList.size>min)?1:0;\n break;\n case 'exportListLarger': // increase current listbox size\n var max=(theList.options.length>25)?theList.options.length:25;\n theList.size+=(theList.size<max)?1:0;\n break;\n case 'exportClose':\n document.getElementById('exportPanel').style.display='none';\n break;\n }\n}\n//}}}\n// //===\n\n// // +++[list display]\n//{{{\nfunction formatExportListHeader(count,total)\n{\n var txt=total+' tiddler'+((total!=1)?'s':'')+" - ";\n txt += (count==0)?"none":(count==total)?"all":count;\n txt += " selected for export";\n return txt;\n}\n\nfunction refreshExportList(selectedIndex)\n{\n var theList = document.getElementById("exportList");\n var sort;\n if (!theList) return;\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) sort='modified';\n if (selectedIndex==1) sort='title';\n if (selectedIndex==2) sort='modified';\n if (selectedIndex==3) sort='modifier';\n\n // get the alphasorted list of tiddlers\n var tiddlers = store.getTiddlers('title');\n // unselect headings and count number of tiddlers actually selected\n var count=0;\n for (var i=0; i<theList.options.length; i++) {\n if (theList.options[i].value=="") theList.options[i].selected=false;\n count+=theList.options[i].selected?1:0;\n }\n // disable "export" button if no tiddlers selected\n document.getElementById("exportStart").disabled=(count==0);\n // update listbox heading to show selection count\n if (theList.options.length)\n theList.options[0].text=formatExportListHeader(count,tiddlers.length);\n\n // if a [command] item, reload list... otherwise, no further refresh needed\n if (selectedIndex>3) return;\n\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=\n new Option(formatExportListHeader(0,tiddlers.length), "",false,false);\n theList.options[i++]=\n new Option(((sort=="title" )?">":indent)+' [by title]', "",false,false);\n theList.options[i++]=\n new Option(((sort=="modified")?">":indent)+' [by date]', "",false,false);\n theList.options[i++]=\n new Option(((sort=="modifier")?">":indent)+' [by author]', "",false,false);\n // output the tiddler list\n switch(sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modifier":\n case "modified":\n var tiddlers = store.getTiddlers(sort);\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++)\n {\n var tiddler = tiddlers[t];\n var theSection = "";\n if (sort=="modified") theSection=tiddler.modified.toLocaleDateString();\n if (sort=="modifier") theSection=tiddler.modifier;\n if (theSection != lastSection)\n {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n}\n//}}}\n// //===\n\n// // +++[list filtering]\n//{{{\nfunction getFilterDate(val,id)\n{\n var result=0;\n switch (val) {\n case 'site':\n var timestamp=store.getTiddlerText("SiteDate");\n if (!timestamp) timestamp=document.lastModified;\n result=new Date(timestamp);\n break;\n case 'file':\n result=new Date(document.lastModified);\n break;\n case 'other':\n result=new Date(document.getElementById(id).value);\n break;\n default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31\n var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;\n var oneday=86400000;\n if (id=='exportStartDate')\n result=new Date((Math.floor(now/oneday)-val)*oneday+tz);\n else\n result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);\n break;\n }\n // DEBUG alert('getFilterDate('+val+','+id+')=='+result+"\snnow="+now);\n return result;\n}\n\nfunction filterExportList()\n{\n var theList = document.getElementById("exportList"); if (!theList) return -1;\n\n var filterStart=document.getElementById("exportFilterStart").checked;\n var val=document.getElementById("exportFilterStartBy").value;\n var startDate=getFilterDate(val,'exportStartDate');\n\n var filterEnd=document.getElementById("exportFilterEnd").checked;\n var val=document.getElementById("exportFilterEndBy").value;\n var endDate=getFilterDate(val,'exportEndDate');\n\n var filterTags=document.getElementById("exportFilterTags").checked;\n var tags=document.getElementById("exportTags").value;\n\n var filterText=document.getElementById("exportFilterText").checked;\n var text=document.getElementById("exportText").value;\n\n if (!(filterStart||filterEnd||filterTags||filterText)) {\n alert("Please set the selection filter");\n document.getElementById('exportFilterPanel').style.display="block";\n return -1;\n }\n if (filterStart&&filterEnd&&(startDate>endDate)) {\n var msg="starting date/time:\sn"\n msg+=startDate.toLocaleString()+"\sn";\n msg+="is later than ending date/time:\sn"\n msg+=endDate.toLocaleString()\n alert(msg);\n return -1;\n }\n\n // scan list and select tiddlers that match all applicable criteria\n var total=0;\n var count=0;\n for (var i=0; i<theList.options.length; i++) {\n // get item, skip non-tiddler list items (section headings)\n var opt=theList.options[i]; if (opt.value=="") continue;\n // get tiddler, skip missing tiddlers (this should NOT happen)\n var tiddler=store.getTiddler(opt.value); if (!tiddler) continue; \n var sel=true;\n if ( (filterStart && tiddler.modified<startDate)\n || (filterEnd && tiddler.modified>endDate)\n || (filterTags && !matchTags(tiddler,tags))\n || (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))\n sel=false;\n opt.selected=sel;\n count+=sel?1:0;\n total++;\n }\n return count;\n}\n//}}}\n\n//{{{\nfunction matchTags(tiddler,cond)\n{\n if (!cond||!cond.trim().length) return false;\n\n // build a regex of all tags as a big-old regex that \n // OR's the tags together (tag1|tag2|tag3...) in length order\n var tgs = store.getTags();\n if ( tgs.length == 0 ) return results ;\n var tags = tgs.sort( function(a,b){return (a[0].length<b[0].length)-(a[0].length>b[0].length);});\n var exp = "(" + tags.join("|") + ")" ;\n exp = exp.replace( /(,[\sd]+)/g, "" ) ;\n var regex = new RegExp( exp, "ig" );\n\n // build a string such that an expression that looks like this: tag1 AND tag2 OR NOT tag3\n // turns into : /tag1/.test(...) && /tag2/.test(...) || ! /tag2/.test(...)\n cond = cond.replace( regex, "/$1\s\s|/.test(tiddlerTags)" );\n cond = cond.replace( /\ssand\ss/ig, " && " ) ;\n cond = cond.replace( /\ssor\ss/ig, " || " ) ;\n cond = cond.replace( /\ss?not\ss/ig, " ! " ) ;\n\n // if a boolean uses a tag that doesn't exist - it will get left alone \n // (we only turn existing tags into actual tests).\n // replace anything that wasn't found as a tag, AND, OR, or NOT with the string "false"\n // if the tag doesn't exist then /tag/.test(...) will always return false.\n cond = cond.replace( /(\ss|^)+[^\s/\s|&!][^\ss]*/g, "false" ) ;\n\n // make a string of the tags in the tiddler and eval the 'cond' string against that string \n // if it's TRUE then the tiddler qualifies!\n var tiddlerTags = (tiddler.tags?tiddler.tags.join("|"):"")+"|" ;\n try { if ( eval( cond ) ) return true; }\n catch( e ) { displayMessage("Error in tag filter '" + e + "'" ); }\n return false;\n}\n//}}}\n// //===\n\n// // +++[output data formatting]>\n// // +++[exportHeader(format)]\n//{{{\nfunction exportHeader(format)\n{\n switch (format) {\n case "TW": return exportTWHeader();\n case "DIV": return exportDIVHeader();\n case "XML": return exportXMLHeader();\n }\n}\n//}}}\n// //===\n\n// // +++[exportFooter(format)]\n//{{{\nfunction exportFooter(format)\n{\n switch (format) {\n case "TW": return exportDIVFooter();\n case "DIV": return exportDIVFooter();\n case "XML": return exportXMLFooter();\n }\n}\n//}}}\n// //===\n\n// // +++[exportTWHeader()]\n//{{{\nfunction exportTWHeader()\n{\n // Get the URL of the document\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if(originalPath.substr(0,5) != "file:")\n { alert(config.messages.notFileUrlError); return; }\n // Remove any location part of the URL\n var hashPos = originalPath.indexOf("#"); if(hashPos != -1) originalPath = originalPath.substr(0,hashPos);\n // Convert to a native file format assuming\n // "file:///x:/path/path/path..." - pc local file --> "x:\spath\spath\spath..."\n // "file://///server/share/path/path/path..." - FireFox pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n // "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."\n // "file://server/share/path/path/path..." - pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n var localPath;\n if(originalPath.charAt(9) == ":") // pc local file\n localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file://///") == 0) // FireFox pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file:///") == 0) // mac/unix local file\n localPath = unescape(originalPath.substr(7));\n else if(originalPath.indexOf("file:/") == 0) // mac/unix local file\n localPath = unescape(originalPath.substr(5));\n else // pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\s\s");\n // Load the original file\n var original = loadFile(localPath);\n if(original == null)\n { alert(config.messages.cantSaveError); return; }\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n { alert(config.messages.invalidFileError.format([localPath])); return; }\n return original.substr(0,posOpeningDiv+startSaveArea.length)\n}\n//}}}\n// //===\n\n// // +++[exportDIVHeader()]\n//{{{\nfunction exportDIVHeader()\n{\n var out=[];\n var now = new Date();\n var title = convertUnicodeToUTF8(wikifyPlain("SiteTitle").htmlEncode());\n var subtitle = convertUnicodeToUTF8(wikifyPlain("SiteSubtitle").htmlEncode());\n var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());\n var twver = version.major+"."+version.minor+"."+version.revision;\n var pver = version.extensions.exportTiddlers.major+"."\n +version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;\n out.push("<html><body>");\n out.push("<style type=\s"text/css\s">");\n out.push("#storeArea {display:block;margin:1em;}");\n out.push("#storeArea div");\n out.push("{padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}");\n out.push("#javascriptWarning");\n out.push("{width:100%;text-align:left;background-color:#eeeeee;padding:1em;}");\n out.push("</style>");\n out.push("<div id=\s"javascriptWarning\s">");\n out.push("TiddlyWiki export file<br>");\n out.push("Source: <b>"+convertUnicodeToUTF8(document.location.toString())+"</b><br>");\n out.push("Title: <b>"+title+"</b><br>");\n out.push("Subtitle: <b>"+subtitle+"</b><br>");\n out.push("Created: <b>"+now.toLocaleString()+"</b> by <b>"+user+"</b><br>");\n out.push("TiddlyWiki "+twver+" / "+"ExportTiddlersPlugin "+pver+"<br>");\n out.push("</div>");\n out.push("<div id=\s"storeArea\s">");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportDIVFooter()]\n//{{{\nfunction exportDIVFooter()\n{\n var out=[];\n out.push("</div></body></html>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportXMLHeader()]\n//{{{\nfunction exportXMLHeader()\n{\n var out=[];\n var now = new Date();\n var u = store.getTiddlerText("SiteUrl",null);\n var title = convertUnicodeToUTF8(wikifyPlain("SiteTitle").htmlEncode());\n var subtitle = convertUnicodeToUTF8(wikifyPlain("SiteSubtitle").htmlEncode());\n var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());\n var twver = version.major+"."+version.minor+"."+version.revision;\n var pver = version.extensions.exportTiddlers.major+"."\n +version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;\n out.push("<" + "?xml version=\s"1.0\s"?" + ">");\n out.push("<rss version=\s"2.0\s">");\n out.push("<channel>");\n out.push("<title>" + title + "</title>");\n if(u) out.push("<link>" + convertUnicodeToUTF8(u.htmlEncode()) + "</link>");\n out.push("<description>" + subtitle + "</description>");\n out.push("<language>en-us</language>");\n out.push("<copyright>Copyright " + now.getFullYear() + " " + user + "</copyright>");\n out.push("<pubDate>" + now.toGMTString() + "</pubDate>");\n out.push("<lastBuildDate>" + now.toGMTString() + "</lastBuildDate>");\n out.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");\n out.push("<generator>TiddlyWiki "+twver+" plus ExportTiddlersPlugin "+pver+"</generator>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportXMLFooter()]\n//{{{\nfunction exportXMLFooter()\n{\n var out=[];\n out.push("</channel></rss>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportData()]\n//{{{\nfunction exportData(theList,theFormat)\n{\n // scan export listbox and collect DIVs or XML for selected tiddler content\n var out=[];\n for (var i=0; i<theList.options.length; i++) {\n // get item, skip non-selected items and section headings\n var opt=theList.options[i]; if (!opt.selected||(opt.value=="")) continue;\n // get tiddler, skip missing tiddlers (this should NOT happen)\n var thisTiddler=store.getTiddler(opt.value); if (!thisTiddler) continue; \n if (theFormat=="TW") out.push(convertUnicodeToUTF8(thisTiddler.saveToDiv()));\n if (theFormat=="DIV") out.push(convertUnicodeToUTF8(thisTiddler.title+"\sn"+thisTiddler.saveToDiv()));\n if (theFormat=="XML") out.push(convertUnicodeToUTF8(thisTiddler.saveToRss()));\n }\n return out;\n}\n//}}}\n// //===\n// //===\n\n// // +++[exportTiddlers(): output selected data to local or server]\n//{{{\nfunction exportTiddlers()\n{\n var theList = document.getElementById("exportList"); if (!theList) return;\n\n // get the export settings\n var theProtocol = document.getElementById("exportTo").value;\n var theFormat = document.getElementById("exportFormat").value;\n\n // assemble output: header + tiddlers + footer\n var theData=exportData(theList,theFormat);\n var count=theData.length;\n var out=[]; var txt=out.concat(exportHeader(theFormat),theData,exportFooter(theFormat)).join("\sn");\n var msg="";\n switch (theProtocol) {\n case "file:":\n var theTarget = document.getElementById("exportFilename").value.trim();\n if (!theTarget.length) msg = "A local path/filename is required\sn";\n if (!msg && saveFile(theTarget,txt))\n msg=count+" tiddler"+((count!=1)?"s":"")+" exported to local file";\n else if (!msg)\n msg+="An error occurred while saving to "+theTarget;\n break;\n case "http:":\n case "https:":\n var theTarget = document.getElementById("exportHTTPServerURL").value.trim();\n if (!theTarget.length) msg = "A server URL is required\sn";\n if (!msg && exportPost(theTarget+encodeURIComponent(txt)))\n msg=count+" tiddler"+((count!=1)?"s":"")+" exported to "+theProtocol+" server";\n else if (!msg)\n msg+="An error occurred while saving to "+theTarget;\n break;\n case "ftp:":\n default:\n msg="Sorry, export to "+theLocation+" is not yet available";\n break;\n }\n clearMessage(); displayMessage(msg,theTarget);\n}\n//}}}\n// //===\n\n// // +++[exportPost(url): cross-domain post] uses hidden iframe to submit url and capture responses\n//{{{\nfunction exportPost(url)\n{\n var f=document.getElementById("exportFrame"); if (f) document.body.removeChild(f);\n f=document.createElement("iframe"); f.id="exportFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n d.location.replace(url);\n return true;\n}\n//}}}\n// //===\n
Like most wikis, TiddlyWiki supports a range of simplified character formatting:\n| !To get | !Type this |h\n| ''Bold'' | {{{''Bold''}}} |\n| ==Strikethrough== | {{{==Strikethrough==}}} |\n| __Underline__ | {{{__Underline__}}} (that's two underline characters) |\n| //Italic// | {{{//Italic//}}} |\n| Superscript: 2^^3^^=8 | {{{2^^3^^=8}}} |\n| Subscript: a~~ij~~ = -a~~ji~~ | {{{a~~ij~~ = -a~~ji~~}}} |\n| @@highlight@@ | {{{@@highlight@@}}} |\n<<<\nThe highlight can also accept CSS syntax to directly style the text:\n@@color:green;green coloured@@\n@@background-color:#ff0000;color:#ffffff;red coloured@@\n@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;border:1px solid black;Access any CSS style@@\n<<<\n\n//For backwards compatibility, the following highlight syntax is also accepted://\n{{{\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@\n}}}\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@
Hewlett-Packard releases individual patches that provide bug fixes and new functionality into the currently supported base operating systems. In addition bundles of these patches are released on CD's at regular intervals. We will look at 4 of these released CD's in this section, Extension Paks, Quality Paks, ACE releases, and DART releases.\n\nExtension Pak - An Extension Pak is a bundle of patches that are meant to be applied over the base OS. 11.0 was released in November of 1997. Approximately every 3 months HP has released an Extension Pak of the latest patches that included both bug fixes and new functionality. Each Extension Pak CD contains both the core OS as well as this bundle of patches. If you cold install a machine from one of these CDs, you will notice that the core OS from 1997 is loaded first and then the patches from the current release are installed. It is not necessary to install the Extension Pak in this manner, you can install only the patch bundle from the CD onto your existing OS without problems.\n\nQuality Pak - This type of patch bundle is released every 6 months for 10.20 and 11.0. It is a set of patches that include only fixes. No new functionality since the last release is included in the bundle. In this way customers can feel relatively secure in the knowledge that this set of patches is free of defects. It is recommended that customers install only Quality Paks when they are released, unless they need the new functionality that the Extension Paks provide.\n\nACE Bundle - ACE Bundles have been released by the workstation group for previous OS revisions. With 11.0 the OS for both workstations and servers is the same. For that reason the ACE bundles are now applicable for both workstations (s700) and servers (s800). An ACE bundle is primarily a hardware enablement patch bundle. In other words, it contains patches that allow new hardware to function with HPUX (drivers, new machines, etc.). Although these patches are released separately for each new piece of the hardware they are periodically bundled together into an ACE release along with the CORE OS and the current Extension Pak. Basically you can think of an ACE Bundle as an Extension Pak with focused section on new hardware enablement. In the 11.0 ACE 9911 CD, the ACE part of bundle (indistinguishable from the Extension Pak 9911) enables HP's new line of workstations, the B1000 and B2000, the C3000 and C3600, the J5000, J5600, and J7000. However, this CD can just as easily be used to load an N4000 or a V2600.\n\nDART Bundles - DART Bundles include updates to all the HP software that is not part of the core OS. For instance, compilers, MC/Service Guard, CIFS/9000, network card drivers, etc. DART CD's do not contain patches, they contain full updated versions of the software.
FENSAP is available from [[Newmerical Technologies International|http:www.newmerical.com]]
Fidap is available from [[Fluent Inc.|http://www.fluent.com]] \nHP Strategic Alliance Manager for Fluent - Lee Fisher\nUses HP-MPI to achieve parallel performance.
JBOD examples:\n-3 internal drives striped together.\n-ds2100 (4 disk enclosure) scsi array connected to 1 scsi pci card\n-ds2300 (14 disk enclosure) scsi array connected to 2 scsi pci cards\n-FC-10 (10 disk enclosure) fibre channel array connected to 2 Host Bus Adapters\n-ds2405(15 disk enclosure) fibre channel array connected to 2 Host Bus Adapters\n-MSA30 (14 disk enclosure) scsi array connected to 2 USCSI-320 controller (A7173A) pci cards\n\nStorage architectures ordered in increasing High Availability, Price and used more in Commercial environment than for technical applications:\n#JBOD: Just a Bunch Of Disks, i.e. no storage cache\n#EVA: Enterprise Virtual Array, feature Moderate storage cache (1-10 GB), but no cache mirroring\n#XP: Large storage cache (> GB), fast cache mirroring\n\n[[IDE]] more commonly known as [[ATA]]\n[[SFS]]
Fire is available from [[AVL|http://www.avl.com]]\nHP Strategic Alliance Manager for Fire: - Lee Fisher\nUses HP-MPI to achieve parallel performance.
/***\n|Name|FlickrGreetingMacro|\n|Created by|PeterKirkland|\n|Version|1.0.1|\n|Requires|~TW2.x|\n!Description\nIt replicates the random greeting messages from\n[[Flickr|http://www.flickr.com/]] in a TiddlyWiki macro.\n\n!History\n* 25-Mar-06, version 1.0.1, couple of tweaks by SimonBaird\n** added flickrGreetingCookie\n** made WelcomeMessage into array literal\n** removed ! since I wanted "Hola and welcome to..."\n* 24-Mar-06, version 1.0.0, first version\n\n!Examples\n|!Source|!Output|h\n|{{{<<flickrGreeting>>}}}|<<flickrGreeting>>|\n|{{{<<flickrGreetingCookie>>}}}|<<flickrGreetingCookie>>|\n|{{{<<flickrGreeting Peter>>}}}|<<flickrGreeting Peter>>|\n|{{{<<flickrGreeting 'Peter Kirkland'>>}}}|<<flickrGreeting 'Peter Kirkland'>>|\n(You can use (single or double) quotes or double square brackets for\nparams with spaces)\n\n!Notes\n*I created this to re-create the international greetings that Flickr uses.\n*I use it in a tiddler linked to my DefaultTiddlers to get a pleasant welcome message!\n*To make the macro work you have to give this tiddler a tag of systemConfig then save and reload.\n*Thanks to Simon Baird for his HelloWorldMacro which taught me how to use macros, and also for his [[MonkeyPirateTiddlyWiki|http://simonbaird.com/mptw/]]!\n\n!Code\n***/\n//{{{\n\n// this part is not actually required but useful to other people using your plugin\nversion.extensions.FlickrGreetingMacro = { major: 1, minor: 0, revision: 1, date: new Date(2006,3,24) };\n\nconfig.macros.flickrGreetingCookie = {};\nconfig.macros.flickrGreetingCookie.handler = function (place,name,params) {\n wikify("<<flickrGreeting " + config.options.txtUserName + ">>", place);\n}\n\nconfig.macros.flickrGreeting = {};\nconfig.macros.flickrGreeting.handler = function (place,name,params) {\n //List of greetings:\n var WelcomeMessage = [\n "Hola",\n "Hala",\n "Shalom",\n "Ni hao",\n "Kumusta",\n "'Allo",\n "G'day",\n "Hoi",\n "Giorno",\n "Hi",\n "Hej",\n "Olá",\n "Ahoy",\n "Salut",\n "Hello",\n "Hoi",\n "Oi",\n "Hoi",\n "Aloha",\n "Bonjour",\n "Guten Tag",\n "Yo",\n "Shalom",\n "Namaste",\n "Ciao"\n ];\n //randomness:\n var index = Math.floor(Math.random() * WelcomeMessage.length);\n //output:\n var who = params.length > 0 ? (" "+params[0]) : "";\n wikify(WelcomeMessage[index] + who /* + "!" */, place);\n}\n\n//}}}\n
Fluent is available from [[Fluent Inc.|http://www.fluent.com]] \nHP Strategic Alliance Manager for Fluent - Lee Fisher\nUses HP-MPI to achieve parallel performance.\n\nFLUENT uses the message-passing interface (MPI) to run in parallel over a multi-processor system or a cluster of single/multi-processor systems. The new Hewlett-Packard PA-8600-based systems, such as the J-Class workstation (HP-UX 10.20 and HP-UX 11.0) and the N-Class and V-Class scalable servers (HP-UX 11.0), achieve dramatic performance improvements using MPI. For HP-UX systems, FLUENT comes precompiled and linked using HP’s customized MPI and Hoops libraries.\n\nAdditional information about MPI may be found at: www.hp.com/go/mpi\n\nIn order to run FLUENT in parallel, you must specify the command line options –php and –tN. The –php tells FLUENT to use the executable which includes the HP version of MPI. The –tN option indicates that N processes are to be run. For optimum performance it is recommended that N be less than or equal to the number of processors available. If you do not specify the –p and –t options, the serial version of FLUENT will run even when multiple processors are available.\nUSING FLUENT 64bit VERSION\n\nFor large FLUENT models, you must use the -64 option to enable 64bit FLUENT.\nMETHODS OF INCREASING PERFORMANCE ON MPI RUNS\n\nPre-partitioning the data sets for parallel runs often has a significant affect on the performance of the execution. If you use a data set that has not been pre-partitioned, Fluent will use a quick method of partitioning the data for the number of processes specified in the –t option. This is not a very optimal method of partitioning. HP suggests you use any of the available partition methods within Fluent to optimally pre-partition the data set to attain better performance. These methods of partitioning can be viewed in the GUI interface under grid-partition. Partition the data set for the maximum number of processors you intend to use it on. Then the same partitioned data set may be use on lesser number of processors if it is evenly divisible into the number used to partition the data. For instance, if you partition a data set for 16 partitions, it can also be used for 8, 4, and 2, but not for 6. For optimum performance you would need to pre-save a 6-partition data set separately for subsequent runs. After the data set is partitioned, write it out as a new case (and data if included) file to be read back in on a subsequent run. Additional performance may be achieved by reordering the data set by using the reorder-domain from the GUI interface. By reordering the data set, you can substantially reduce the communications between the partitions (via MPI) during the solution.
The next major release of HPUX will be 11.i. It is planned that every 6 months after release HP will issue a "Golden Bundle" that will encompass the same ideals as the Quality Pak, but also include the entire development environment. It is hoped that all of our partners will be allowed to participate in the testing of the bundle before it is released. In that way it can be viewed as an extremely stable platform with which all our customers can be confident in is quality. It should also allow you to make one recommendation for what OS and patch level to use for your product.
To get started with a blank or scratch TiddlyWiki, you'll need to modify the following tiddlers:\n* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)\n* MainMenu: The menu (usually on the left)\n* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened\nYou'll also need to enter your username for signing your edits: <<option txtUserName>>\n* The local style modfication is on this StyleSheet.\n* Also see the HowTo for a quick list of tasks.\n* You may be eventually needing the ImportTiddlersPanel for merging Tiddlers from different files (ImportTiddlersPlugin).
HP-MPI is available from [[Hewlett-Packard|http://www.hp.com]] at http://www.hp.com/go/mpi\nHP-MPI for HP-UX, Linux and HP Tru64 UNIX is a high performance and production quality implementation of the Message-Passing Interface (MPI) standard for HP servers and workstations [[Platforms]]. HP-MPI uses enhancements whenever appropriate to provide low latency and high bandwidth point-to-point and collective communication routines. It supports multi-protocol execution of MPI applications on clusters of shared-memory servers so that applications can take advantage of the shared memory for intra-node communications.\nHP-MPI supports multiple [[Interconnects]] so that customers can build a single executable that transparently takes advantage of the supported high performance features. This greatly reduces the efforts of customers and Independent Software Vendors (ISVs) to make their applications available on the latest [[Interconnects]] and [[Platforms]].\nRedhat Enterprise Linux AS 2.1, Redhat Enterprise Linux AS 3.0, and Suse SLES 9 distributions are officially supported. Others may work, but are not tested and officially supported.\nCheck for HP-MPI version, preferably greater than 2.2 with:\n{{{\n/opt/hpmpi/bin/mpirun -version\nswlist –l product | grep “HP MPI” #for HP-UX\nrpm –qa | grep “hpmpi” #for Linux\n}}}\nMultiple versions may coexist by using {{{MPI_ROOT}}}:\n{{{\n% setenv MPI_ROOT /scratch/test-hp-mpi-2.0.1/\n% $MPI_ROOT/bin/mpirun ….\n%#or:\n% export MPI_ROOT=/scratch/test-hp-mpi-2.0.1\n% $MPI_ROOT/bin/mpirun …..\n}}}\nIf only one copy of HP-MPI is installed on the system and it is in /opt/hpmpi or /opt/mpi, then setting {{{MPI_ROOT}}} is not needed.\nTo install in a non-standard location on Linux\n{{{\nrpm --prefix=/wherever/you/want -ivh hpmpi-XXXXX.XXX.rpm\n#or\nrpm2cpio hpmpi-XXXXX.XXX.rpm | cpio –id\n}}}\nTo run HP-MPI no license is needed on HP-UX or an XC3000, XC4000 or XC6000 system or if running a supported CAEApplications.
The following chart lists HP-UX operating system revisions with their nomenclatures which might be loaded on a given system. The "uname" command is used to gather system information such as operating system, OS, revision or the model number of the system. Using the command "uname -r" will return just the OS revision. Using "uname -a" will return all the information in a single string.\n\nHP-UX version 10.20 is not detailed here because it is a 32 bit operating system.\nSystems used for CAE applications need the increased addressing capability provided by 64-bit systems to cope with datasets with a discretization scale above 2 millions.\n(Depending on the application, this can be the number of degrees of freedom or volume elements or grid points etc...)\n\nSee also:\n[[HP-UX 11i – Value leadership for enterprise UNIX\n|http://www.hp.com/products1/unix/operating/]] for a general presentation of HP-UX\n\n\nNext, the notion of OperatingSystemEnvironment is very important for the proper configuration of a CAE compute and graphics system.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<html>\n<table class=MsoNormalTable border=1 cellpadding=0 width="100%"\n style='width:100.0%;mso-cellspacing:1.5pt'>\n <tr style='mso-yfti-irow:0'>\n <td width="19%" style='width:19.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>HP-UX Version Reference</span></p>\n </td>\n <td width="39%" style='width:39.0%;padding:.75pt .75pt .75pt .75pt'>\n\n <p class=MsoNormal><span style='color:black'>System Release ID\n\n(&quot;<span class=SpellE>uname</span> -r &quot;&nbsp;)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;</span></p>\n </td>\n <td width="32%" style='width:32.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>Comments</span></p>\n\n </td>\n </tr>\n <tr style='mso-yfti-irow:1'>\n <td width="19%" style='width:19.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>11.0</span></p>\n </td>\n <td width="39%" style='width:39.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>B.11.0</span></p>\n\n </td>\n <td width="32%" style='width:32.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal>PA-RISC systems only</p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:2'>\n <td width="19%" style='width:19.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>11i</span></p>\n\n </td>\n <td width="39%" style='width:39.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>B.11.11</span></p>\n </td>\n <td width="32%" style='width:32.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal>PA-RISC systems only</p>\n </td>\n </tr>\n\n <tr style='mso-yfti-irow:3'>\n <td width="19%" style='width:19.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>11i Version 1.5</span></p>\n </td>\n <td width="39%" style='width:39.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>B.11.20</span></p>\n </td>\n <td width="32%" style='width:32.0%;padding:.75pt .75pt .75pt .75pt'>\n\n <p class=MsoNormal>Itanium 1 (Merced) systems</p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:4'>\n <td width="19%" style='width:19.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>11i Version 1.6</span></p>\n </td>\n <td width="39%" style='width:39.0%;padding:.75pt .75pt .75pt .75pt'>\n\n <p class=MsoNormal><span style='color:black'>B.11.22</span></p>\n </td>\n <td width="32%" style='width:32.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal>Itanium 2 (McKinley) systems</p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>\n <td width="19%" style='width:19.0%;padding:.75pt .75pt .75pt .75pt'>\n\n <p class=MsoNormal><span style='color:black'>11i Version 2.0</span></p>\n </td>\n <td width="39%" style='width:39.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>B.11.23</span></p>\n </td>\n <td width="32%" style='width:32.0%;padding:.75pt .75pt .75pt .75pt'>\n <p class=MsoNormal><span style='color:black'>Itanium 2 (Madison) systems</span></p>\n\n </td>\n </tr>\n</table>\n</html>\n
HP-UX will not fulfill a single IO write request but will delay (WriteBehind) by accumulating blocks in the BufferCache until a writeout of several blocks by using as much IOBandwidth as possible. It will also ReadAhead several blocks starting upon the first request to maximize IOBandwidth usage.\nHP-UX can also optimize ReadBackward patterns which occur frequently in MSCNastran.\nIO intensive applications perform best when buffer cache is set very high (90%). An extreme example would be NFS.\nBuffer cache can therefore be increased for IO performance, but takes up memory that is then not available to users.\nIf set too high the system will not have enough memory left over for users to run jobs without paging. Operating system memory is typically 10% of physical memory. Buffer cache should be the highest possible to still leave room for the real memory used by the OS and the application. For example if the system has 16 gb of real memory and the application job will use 4 gb then 16 gb - 4 gb - 2 gb (os) = 10 gb is left over for buffer cache. Thus, one could set the buffer cache to 60% of real memory. The system should be carefully monitored with {{{/opt/perf/bin/glance}}} with {{{m}}} for memory use in the beginning to make sure the value choosen is good. If there is a lot of paging/swapping activity then it should be lowered.\nBenefits of buffer caching will be seen if scratch files fit in and/or there are repeated read or write accesses to the same file records.\nBetter performance is obtained when the buffer cache is set static rather that dynamic. When an application requests a block of buffer cache, the kernel no longer does any checking to see if it can grow the buffer cache to satisfy the request. It goes directly to a routine to pick the last recently used block. Also, vhand no longer checks buffer cache pages to steal since it can't reduce the size of the buffer cache anyway. There are therefore fewer kernel interruptions, so the application benefits. Another disadvantage of dynamic buffer cache is memory fragmentation over time.\n\nHowever, if the machine is tasked to do many different jobs (for instance allowing for multiple interactive sessions), the buffer cache should be set to dynamic and the defaultsminimum and maximum settings of 5% and 50% will work.\n\ndbc_min_pct, dbc_max_pct, nbuf, bufpages parameters are used to specify the amount of main memory used for buffer cache. The parameters dbc_min_pct and dbc_max_pct determine the bounds for dynamic buffer cache. Buffer cache is allowed to float between the two values depending on the memory load of the machine. These values are only used if both nbuf and bufpages are set to 0 (the default). The parameter bufpages is used if nbuf is set to 0. The value of this parameter refers to the number of memory pages (4k by default) to use for buffer cache. This is a static value. Memory is allocated to buffer cache based on this value at boot time {{{grep buffers /var/adm/syslog/syslog.log}}} and is never deallocated. If nbuf is set to something other than 0 it will be used and all the other parameters are ignored. This value represents the number of buffer headers allocated to buffer cache. A buffer header is 8K or greater depending on the block size of your file systems.\n
*Install [[TCOE]] bundle and apply all the suggested patches (ChoosingWhatToInstall)(PatchesUpgrades)\n*Configure [[ccNUMA]] systems with Cell-Local Memory (CLM).\n*Check enough [[Swap]] space is available (also reset KernelTuning {{{swapmem_on=0}}} SwapMem)\n*Set sufficient BufferCache (application dependent)\n*Ensure the key tunables ({{{max[dst]siz[_64bit]}}}) set high (KernelTuning)\n*Create a large scratch space (largefiles (>2GB) enabled, striped) (IOTuning)\n*Setup fast file system tunables ({{{/etc/vx/tunefstab}}} with right values) (TuningMountingOptionsVxFSFileSystem)\nFor development:\n*Install latest compilers (F90, C, C++), MPI, MLIB (ChoosingWhatToInstall)\n*Install necessary DiagnosticTools and PerformanceTools.
1)Use {{{bdf}}} to see the device the file system is on:\n{{{\n mkcl05-/bin/ksh% bdf /lvol_2_2lvd\n Filesystem kbytes used avail %used Mounted on\n /dev/vg01/lvol1 143261696 59524184 83100488 42% /lvol_2_2lvd\n}}}\nso this is /dev/vg01/lvol1, which we assume is a volume group using LVM (we can't be sure since the device files can be any name..., but this is the default behavior).\n2)Use {{{/usr/sbin/lvdisplay -v /dev/vg01/lvol1|more}}} and {{{/usr/sbin/vgdisplay -v vg01|more}}} to see:\n(A)Wether this is an LVM volume.\n(B)How the volume is built (mirror'd/striped/etc.)\n(C)If the file system needs to be extended,\n(D)The stripe size and the number of disks in the stripe if the file system is striped, otherwise it can also tell how many mirrors or how many disks are used in the file system.\n{{{\n mkcl05-/bin/ksh% /usr/sbin/lvdisplay -v /dev/vg01/lvol1 |more\n --- Logical volumes ---\n LV Name /dev/vg01/lvol1\n VG Name /dev/vg01\n LV Permission read/write\n LV Status available/syncd\n Mirror copies 0\n Consistency Recovery MWC\n Schedule striped\n LV Size (Mbytes) 139904\n Current LE 2186\n Allocated PE 2186\n Stripes 2\n Stripe Size (Kbytes) 64\n Bad block on\n Allocation strict\n IO Timeout (Seconds) default\n}}}\nThis head information shows:\n(A)This is an LVM volume,\n(B)It is not mirrored (Mirror Copies) and it is striped (Schedule).\n(C)This is a 138GB partition which is similar to the bdf output so the file system doesn't need to be extended (to extend a file system one needs to first extend the logical volume, sometimes people forget the second step in actually extending the file system.)\n(D)There are 2 disks (Stripes) and we're using 64k (Stripe Size) blocks.\nMore information for the output of the above command.\n{{{\n --- Distribution of logical volume ---\n PV Name LE on PV PE on PV\n /dev/dsk/c2t1d0 1093 1093\n /dev/dsk/c3t2d0 1093 1093\n}}}\nThis middle part shows that each disk is fully used by this partition (when looking also at {{{/usr/sbin/vgdisplay -v vg01}}}), so other partitions are not getting in the way. Then the information shows the pattern.\n{{{\n --- Logical extents ---\n LE PV1 PE1 Status 1\n 00000 /dev/dsk/c2t1d0 00000 current\n 00001 /dev/dsk/c3t2d0 00000 current\n 00002 /dev/dsk/c2t1d0 00001 current\n 00003 /dev/dsk/c3t2d0 00001 current\n 00004 /dev/dsk/c2t1d0 00002 current\n 00005 /dev/dsk/c3t2d0 00002 current\n}}}\nThe map of logical extents to physical extents. We see here that the striping is done correctly, striping across controllers as well as disks. Here is another example with more than two disks:\n{{{\n --- Logical extents ---\n LE PV1 PE1 Status 1\n 00000 /dev/dsk/c3t4d0 00000 current\n 00001 /dev/dsk/c0t4d0 00000 current\n 00002 /dev/dsk/c3t5d0 00000 current\n 00003 /dev/dsk/c0t5d0 00000 current\n 00004 /dev/dsk/c3t8d0 00229 current\n 00005 /dev/dsk/c0t8d0 00229 current\n 00006 /dev/dsk/c3t9d0 00000 current\n 00007 /dev/dsk/c0t9d0 00000 current\n 00008 /dev/dsk/c3t10d0 00000 current\n 00009 /dev/dsk/c0t10d0 00000 current\n 00010 /dev/dsk/c3t11d0 00000 current\n 00011 /dev/dsk/c0t11d0 00000 current\n 00012 /dev/dsk/c3t12d0 00000 current\n 00013 /dev/dsk/c0t12d0 00000 current\n 00014 /dev/dsk/c3t4d0 00001 current\n}}}\nThe right hand side physical extent numbers are not what would be expected (all should be 0's until the patern repeats). This is because there was enough space left over on the drives so that the logical volume could perform bad block relocation. In other words those disks have bad spots, but LVM was able to compensate unlike in the first example where the whole disk was completely used and this will not be possible even though from {{{lvdisplay}}} one sees it is turned on.\n\n3)Use [[ioscan]] to display the hardware components of the IO subsystem.\n4)For the file system build info you need to be root to read the info.\nFor the options used in making it ({{{newfs -o *}}}) run:\n{{{\n mkcl05% /usr/sbin/fsadm -F vxfs /lvol_2_2lvd \n largefiles\n}}}\nWhich shows it was made with large files (>2GB). One can convert vxfs to large file aware using this command. To find out what block size the file system was built one would need to use q4 to examine the data structures if its not stored in /var/adm/sbtab (only hfs file systems HFS now).\n{{{\n/usr/sbin/fsdb -F vxfs /dev/vg01/lvol1\n}}}\nthen "dev <return>" and "i <return>" will show the size of that inode, which should be 8k (here it actually could be a fragment at 1K,\n{{{\n mkcl05% /usr/sbin/fsdb -F vxfs /dev/vg01/lvol1\n > dev\n device configuration record at 0x0000000d.0000\n dc_magic 0xa514fcf5 dc_checksum 0xa6263d6e dc_flags 0x0\n dc_devid 0 dc_len 17907712\n dc_stateino 32 dc_sumino 34 dc_mapino[10 42] dc_labeltype 2 dc_labelino 0\n > i\n inode structure at 0x00000008.0800\n type IFDEV mode 2700000777 nlink 1 uid 0 gid 0 size 8192\n atime 1036461270 119791 (Mon Nov 4 19:54:30 2002 CDT)\n mtime 1036461270 119791 (Mon Nov 4 19:54:30 2002 CDT)\n ctime 1036461270 119791 (Mon Nov 4 19:54:30 2002 CDT)\n aflags 0 orgtype 1 eopflags 0 eopdata 0\n fixextsize/fsindex 0 rdev/reserve/dotdot/matchino 40\n blocks 1 gen 0 version 0 0 iattrino 0\n de: 13 0 0 0 0 0 0 0 0 0\n des: 1 0 0 0 0 0 0 0 0 0\n ie: 0 0\n ies: 0\n > q\n}}}\nUse care with fsdb as one can destroy the file system by typing the wrong commands.\n
Two different files systems can be used:\nHFS (Performance File System), based on UFS (Unix File System) \nor the more recent \nJFS (Journaled File System) also referred to as VxFS and produced by VERITAS.\nHFS scales up to around 550MB/sec. VxFS has been shown to scale up to 2 GB/sec read and write on a single file system striped in a Superdome configuration.\nThe VERITAS File System 3.5 (HP OnlineJFS/JFS 3.5) product is the next generation of the product known as HP OnlineJFS/JFS 3.3. \nThe base VERITAS File System 3.5 (HP JFS 3.5) is a new version of the base journaled file system for HP-UX 11i.\nThe full VERITAS File System 3.5 (HP OnlineJFS 3.5) enables advanced file system features and is ordered as an optional product.\nEnter {{{/usr/sbin/swlist |egrep -i "jfs|vx"}}} for installed file system products installed on a system.\n\nBase VERITAS File System 3.5, HP JFS 3.5, and base VxFS are used interchangeably.\nFull VERITAS File System 3.5, HP OnlineJFS 3.5, and full VxFS are used interchangeably.\n\nAs of HP-UX 11i, all file systems on [[TCOE]]-based machines default to VxFS, except for the \nstand partition on machines using PA-RISC processors, which is HFS.\n\nThe scratch file system stripe may be built using {{{/usr/sbin/sam}}} or on the command line following BuildingVirtualDisks.\n\nUse HP-UXFileSystemIdentification to characterize instances of existing HP-UXFileSystems.
{{{/usr/contrib/bin/machinfo}}}, available on Itanium2 will print hardware information including [[RAM]] available.\nIf not available, use\n{{{grep Physical /var/adm/syslog/syslog.log}}}\n\nThe ideal situation is to have enough memory for the entire job to reside in memory and still have room for the operating system and BufferCache. To determine if enough memory is available, run {{{/opt/perf/bin/glance}}} while the application is running. A 60 day trial version of glance is included on the HP-UX application CD-ROM. Select the application process in glance and monitor the memory usage. \nThere are four things to watch for: \n1) large (U)ser memory, \n2) very small (B)uffer cache memory, \n3) high (V)irtual memory disk usage, and \n4) the ratio of RSS (resident set size) to VSS (virtual set size).\n\nThe RSS is the amount of physical memory ([[RAM]]) currently being used by a process. VSS is that amount of virtual memory allocated to a process. Ideally, the RSS and VSS should be the same. A large difference combined with Virtual Memory Disk activity, means there is not enough [[RAM]] and the application has to use [[Swap]] space.
Occasionally, patches for HP-UX may be required for your application. Patches can be found at us-support.external.hp.com (Americas and Asia) or europe-support.external.hp.com (for Europe).\n
Involves first the choice between [[Platforms]].\n\nFor best results, allow only one job per Core. If you have additional Cores, consider allocating one Core for system tasks. Allowing more than one job per Core can lead to cache-thrashing and excessive context switching. Job ProcessorAllocation occurs itself within a QueueingSystem.\n\nNext, both the amount and rating of [[RAM]] as well as the [[Interconnects]] between compute nodes are chosen.\nIn HP-UX {{{/usr/contrib/bin/machinfo}}} will printout CPU, Vendor, Bus, Cache, [[RAM]], Firmware, Identification, OS information and the IO subsystems are displayed with [[ioscan]]\nIn [[Linux]] {{{cat /proc/cpuinfo}}} will printout CPU, Cache and {{{/usr/bin/free}}} will printout [[RAM]].
/***\n|Name|HelloWorldMacro|\n|Created by|SimonBaird|\n|Location|http://simonbaird.com/mptw/#HelloWorldMacro|\n|Version|1.0.3|\n|Requires|~TW2.x|\n!Description\nIt's a Hello World TiddlyWiki macro.\n\n!History\n* 03-Mar-06, version 1.0.3, added version.extensions data\n* 13-Jan-06, version 1.0.2, added shout macro example\n* 11-Jan-06, version 1.0.1, updated for ~TW2.0\n\n!Examples\n|!Source|!Output|h\n|{{{<<helloWorld dude>>}}}|<<helloWorld dude>>|\n|{{{<<helloWorld 'to everyone'>>}}}|<<helloWorld 'to everyone'>>|\n(You can use (single or double) quotes or double square brackets for params with spaces)\n\n!Notes\nThis is intended to help you get started with customising your TW. To make the macro work you have to give this tiddler a tag of systemConfig then save and reload. To learn more about customising Tiddlywiki you can look at other people's plugins or click View, Source in your browser and start reading. :)\n\n!Code\n***/\n//{{{\n\n// this part is not actually required but useful to other people using your plugin\nversion.extensions.HelloWorldMacro = { major: 1, minor: 0, revision: 3, date: new Date(2006,3,3),\n source: "http://simonbaird.com/mptw/#HelloWorldMacro"\n};\n\nconfig.macros.helloWorld = {};\nconfig.macros.helloWorld.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n var who = params.length > 0 ? params[0] : "world";\n wikify("Hello //" + who + "// from the '" + macroName + "' macro in tiddler [[" + tiddler.title + "]].", place);\n}\n\n// a one liner...\nconfig.macros.shout = { handler: function(place,name,params) { wikify("//''@@font-size:5em;color:#696;"+ params[0] + "!@@''//", place); } };\n\n\n//}}}\n\n/***\n\n!Another example\n{{{<<shout Yeah>>}}}\n\n<<shout Yeah>>\n\n***/\n
[[Main corporate site |http://www.hp.com/]]
MonoSpacedText\nExtendedFormatting\nBulletPoints\nNumberedBulletPoints\nBlockQuotes\nSubHeadings\n[[Tables]]\nHowToFormatText\nInlineHTML
TiddlyWiki supports all kinds of formatting options:\n*You can create ''Bold'' text by enclosing it in pairs of single quotes:\n{{{\n''bold text''\n}}}\n\n*You can create ==Strikethrough== text by enclosing it in pairs of equal signs:\n{{{\n==strikethrough text==\n}}}\n\n*You can __Underline__ text by enclosing it in pairs of underscores:\n{{{\n__underlined text__\n}}}\n\n*You can create //Italic// text by enclosing it in pairs of forward slashes:\n{{{\n//italic text//\n}}}\n\n*You can create ^^superscript^^ text by enclosing it in pairs of carets:\n{{{\n^^superscript text^^\n}}}\n\n*You can create ~~subscript~~ text by enclosing it in pairs of tildes:\n{{{\n~~subscript text~~\n}}}\n\n*You can change the text's @@color(green):color@@ by enclosing it in pairs of at-signs (@@@@) and specifying a text color:\n{{{\n@@color(yourcolorhere):colored text@@\n}}}\n\n*You can change the text's @@bgcolor(red):background color@@ by enclosing it in pairs of at-signs (@@@@) and specifying a background text color:\n{{{\n@@bgcolor(yourcolorhere):your text here@@\n}}}\n\nTo use mixed case and //not// create a tiddler, like ~JavaScript, just precede the word with a single tilde (~). \n\n{{{\n~JavaScript\n}}}
To setup ssh access for remote hosts sharing the same home directory:\n{{{\nmkdir .ssh \ncd ~/.ssh\n}}}\nGenerate RSA1 keys for SSH1; hit return when prompted for password if none is desired\n{{{\nssh-keygen\ncat identity.pub >> authorized_keys\n}}}\nGenerate RSA keys for SSH2; hit return when prompted for password if none is desired\n{{{\nssh-keygen –t rsa\ncat id_rsa.pub >> authorized_keys\n}}}\nGenerate DSA keys for SSH2; hit return when prompted for password if none is desired\n{{{\nssh-keygen –t dsa\ncat id_dsa.pub >> authorized_keys\n}}}\nNeeded for ssh:\n{{{\nchmod go-rwx authorized_keys\nchmod go-w ~\n}}}\nFor cases where node addresses may match across clusters accessed through the same {{{~/.ssh/known_hosts}}} file, copy system's ssh configuration file to own personal copy and add following options:\n{{{\ncp /etc/ssh/ssh_config $HOME/.ssh/config\ncat >>$HOME/.ssh/config <<EOF\nCheckHostIP no\nStrictHostKeyChecking no\nEOF\n}}}\nUse {{{ssh -v}}} for verbose logging, to see what is happening.\nMore general cases:\nhttp://www.puddingonline.com/~dave/publications/SSH-with-Keys-HOWTO/\nhttp://www.csua.berkeley.edu/ssh-howto.html\nhttp://www.arches.uga.edu/~pkeck/ssh/
[[IDE]] Short for Integrated Drive Electronics or IBM Disc Electronics, IDE is more commonly known as [[ATA]] and is a standard interface for IBM compatible hard drives. IDE is different from the Small Computer Systems Interface (SCSI) and Enhanced Small Device Interface (ESDI) because its controllers are on each drive, meaning the drive can connect directly to the motherboard or controller. IDE and its updated successor, Enhanced IDE (EIDE), are the most common drive interfaces found in IBM compatible computers.\n[[IDE]] compatible disks are not recommended in server class machines for hardware robustness reasons, and therefore the need to tune performance on [[IDE]] based systems is rare. LinuxIDEPerformance
Overall IOBandwidth results from the combination of Disks with typical ratings such as:\n*10K RPM disk (8MB Cache) 40-50MB/s\n*15K RPM disk (8MB Cache) 50-75MB/s\nin enclosures fitted with various types of IOControllers:\n*[[PATA]] 100MB/s\n*[[SATA]] 150MB/s\n*U160 SCSI 160MB/s (1 controller for no more than 4 drives)\n*U320 SCSI 320MB/s (1 controller for no more than 8 drives)\n*Fiber Channel 200MB/s\nand connected to the host through slots of a given interface type:\n*33-MHz PCI: 266MB/sec\n*66-MHz PCI: 532MB/sec\n*100-MHz PCI-X: 800MB/sec\n*133-MHz PCI-X: 1066MB/sec for sx1000 chipset, 2133MB/sec for sx2000 chipset.\n*x16 PCI Express: 8GB/sec\n\nSome measurements by [[IOzone]]: (#controllers_#disksType)\n/2_2lvd Read=40 Write=10 MB/s\n/1_2scsi Read=155 Write=170 MB/s\n/1_4scsi Read=230 Write=240 MB/s\n/2_10fc Read=500 Write=500 MB/s\n/1_7msa30 Read=140 Write=160 MB/s\n/2_10msa30 Read=515 Write=415 MB/s\n/4_28msa30 Read=715 Write=430 MB/s\n\nNote: IOBandwidth does not need to be more than the MemoryBandwidth which would be typically of the order of 5GB/s.\nIO benchmark alternatives are [[diskbench|http://nodesoft.com]] and [[AxWork|http://www.inwork.ch]].\n
CAEApplications need good IO performance for overall performance and are characterized by large sequential read/writes of a fixed request size and a few random reads. Faster cpus & larger caches increasing MemoryBandwidth and decreasing MemoryLatency make CAEApplications more IO bound than before.\nDisk IO, file system configuration and tuning can therefore dramatically affect job run time of CAEApplications especially with structures jobs. CFD and Crash applications are not nearly as IO intensive, but depending on the particular dataset may also benefit.\nAdding cpus will help performance but adding more IO bandwidth and memory for buffer cache may be more effective.\nSince most CAEApplication IO is scratch, there is little value in breaking up the filesystem and reliability is less a concern than performance, thus the choice of [[RAID]] 0 for IOBandwidth as in the following FileSystems.\nRecently, [[RAID]] 5 can be used with [[SFS]] for better hardware allocation. \nCAEApplications often allow the user to change the IO blocks of data they manipulate, which ideally should be large enough to amortize typical disk seek times (5ms).\nA shortfall in IOBandwidth or excessive seek times will manifest themselves in large real time compared to CPU times whereas MemoryBandwidth capacity will affect CPU time itself.\n\n\n
Very popular and widely accepted IO performance measurement tool it can be downloaded from: [[IOzone|http://www.iozone.org/]].\nBenchmarks FileSystems, not raw devices.\nSequential and random access, read and write.\nThroughput mode (multiple threads, multiple processes) available.\nRecommended command, run from the scratch file system used for CAEApplications:\n{{{\niozone –i 0 –i 1 -i2 -i3 –r 64 –s 4g\n}}}\n-r: I/O blocksize in KB\n-i: Operation (0=sequential write, 1=sequential read, 2=random write and random read, 3=ReadBackwards)\n-t: Number of concurrent streams (= processes)\n-s: size of the file to use for testing. Five times physical memory is recommended to get adequate accuracy.B
<<importTiddlers inline>>
/***\n''Import Tiddlers Plugin for TiddlyWiki version 1.2.x, 2.0 and 2.1beta''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#ImportTiddlersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. It can also be very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\n!!!!!Interactive interface\n<<<\n{{{<<importTiddlers>>}}}\ncreates "import tiddlers" link. click to show/hide import control panel\n\n{{{<<importTiddlers inline>>}}}\ncreates import control panel directly in tiddler content\n\n<<importTiddlers inline>>\n\nPress ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename or a remote document URL (starting with http://)and press ''[open]''. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//\n\nSelect one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.\n\n''select: all, new, changes, or differences''\n\nYou can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:\n>''"all"'' selects ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' selects only tiddlers that exist in both documents but that are newer in the source document\n>''"differences"'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)\n\n''Import Tagging:''\n\nTiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.\n\n''Skip, Rename, Merge, or Replace:''\n\nWhen importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.\n\nTo bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.\n\n//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//\n\n''Import Report History''\n\nWhen tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.\n\nWhen the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.\n\nIf a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.\n\nNote: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the "create a report" checkbox before beginning the import processing.\n\n<<<\n!!!!!non-interactive 'load tiddlers' macro\n<<<\nUseful for automated installation/update of plugins and other tiddler content.\n\n{{{<<loadTiddlers "label:load tiddlers from %0" http://www.tiddlytools.com/example.html confirm>>}}}\n<<loadTiddlers "label:load tiddlers from %0" http://www.tiddlytools.com/example.html confirm>>\n\nSyntax:\n{{{<<loadTiddlers label:text prompt:text filter source quiet confirm>>}}}\n\n''label:text'' and ''prompt:text''\n>defines link text and tooltip (prompt) that can be clicked to trigger the load tiddler processing. If a label is NOT provided, then no link is created and loadTiddlers() is executed whenever the containing tiddler is rendered.\n''filter'' (optional) determines which tiddlers will be automatically selected for importing. Use one of the following keywords:\n>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler\n>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)\n>''"tiddler:~TiddlerName"'' retrieves only the specific tiddler named in the parameter.\n>''"tag:text"'' retrieves only the tiddlers tagged with the indicated text.\n''source'' (required) is the location of the imported document. It can be either a local document path/filename in whatever format your system requires, or a remote web location (starting with "http://" or "https://")\n>use the keyword ''ask'' to prompt for a source location whenever the macro is invoked\n''"quiet"'' (optional)\n>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.\n''"confirm"'' (optional)\n>adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.\n<<<\n!!!!!Installation\n<<<\ncopy/paste the following tiddlers into your document:\n''ImportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < ImportTiddlers > >" macro^^\n\n''Quick Installation Tip #1:''\nIf you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.\n<<<\n!!!!!Revision History\n<<<\n''2006.04.04 [3.0.1]''\nin refreshImportList(), when using [by tags], tiddlers without tags are now included in a new "untagged" psuedo-tag list section\n''2006.04.04 [3.0.0]''\nSeparate non-interactive {{{<<importTiddlers...>>}}} macro functionality for incorporation into TW2.1 core and renamed as {{{<<loadTiddlers>>}}} macro. New parameters for loadTiddlers: ''label:text'' and ''prompt:text'' for link creation, ''ask'' for filename/URL, ''tag:text'' for filtering, "confirm" for accept/reject of individual inbound tiddlers. Also, ImportedTiddlers report generator output has been simplified and "importReplace/importPublic" tags and associated "force" param (which were rarely, if ever, used) has been dropped.\n''2006.03.30 [2.9.1]''\nwhen extracting store area from remote URL, look for "</body>" instead of "</body>\sn</html>" so it will match even if the "\sn" is absent from the source.\n''2006.03.30 [2.9.0]''\nadded optional 'force' macro param. When present, autoImportTiddlers() bypasses the checks for importPublic and importReplace. Based on a request from Tom Otvos.\n''2006.03.28 [2.8.1]''\nin loadImportFile(), added checks to see if 'netscape' and 'x.overrideMimeType()' are defined (IE does *not* define these values, so we bypass this code)\nAlso, when extracting store area from remote URL, explicitly look for "</body>\sn</html>" to exclude any extra content that may have been added to the end of the file by hosting environments such as GeoCities. Thanks to Tom Otvos for finding these bugs and suggesting some fixes.\n''2006.02.21 [2.8.0]''\nadded support for "tiddler:TiddlerName" filtering parameter in auto-import processing\n''2006.02.21 [2.7.1]''\nClean up layout problems with IE. (Use tables for alignment instead of SPANs styled with float:left and float:right)\n''2006.02.21 [2.7.0]''\nAdded "local file" and "web server" radio buttons for selecting dynamic import source controls in ImportPanel. Default file control is replaced with URL text input field when "web server" is selected. Default remote document URL is defined in SiteURL tiddler. Also, added option for prepending SiteProxy URL as prefix to remote URL to mask cross-domain document access (requires compatible server-side script)\n''2006.02.17 [2.6.0]''\nRemoved "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.\n''2006.02.16 [2.5.4]''\nadded checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.\n''2006.02.14 [2.5.3]''\nFF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()\n''2006.02.10 [2.5.2]''\ncorrected unintended global variable in importReport().\n''2006.02.05 [2.5.1]''\nmoved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2006.01.18 [2.5.0]''\nadded checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.\n''2006.01.15 [2.4.1]''\nadded "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic\n''2006.01.15 [2.4.0]''\nAdded support for tagging individual tiddlers with importSkip, importReplace, and/or importPrivate to control which tiddlers can be overwritten or shared with others when using auto-import macro syntax. Defaults are to SKIP overwriting existing tiddlers with imported tiddlers, and ALLOW your tiddlers to be auto-imported by others.\n''2006.01.15 [2.3.2]''\nAdded "ask" parameter to confirm each tiddler before importing (for use with auto-importing)\n''2006.01.15 [2.3.1]''\nStrip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. Makes loading more efficient by reducing the document size and by preventing the import document from executing its TW initialization (including plugins). Seems to resolve the "Found 0 tiddlers" problem. Also, when importing local documents, use convertUTF8ToUnicode() to convert the file contents so support international characters sets.\n''2006.01.12 [2.3.0]''\nReorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest. Let's processing continue while waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' macro mode, using parameters to specify which tiddlers to import, and from what document source. Improved error messages and diagnostics, plus an optional 'quiet' switch for batch mode to eliminate //most// feedback.\n''2006.01.11 [2.2.0]''\nAdded "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck\n''2006.01.09 [2.1.1]''\nWhen a URL is typed in, and then the "open" button is pressed, it generates both an onChange event for the file input and a click event for open button. This results in multiple XMLHttpRequest()'s which seem to jam things up quite a bit. I removed the onChange handling for file input field. To open a file (local or URL), you must now explicitly press the "open" button in the control panel.\n''2006.01.08 [2.1.0]''\nIMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.\n''2006.01.06 [2.0.2]''\nWhen refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.\n''2006.01.04 [2.0.1]''\nWhen "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.\n''2005.12.27 [2.0.0]''\nUpdate for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n''2005.12.22 [1.3.1]''\ntweak formatting in importReport() and add 'discard report' link to output\n''2005.12.03 [1.3.0]''\nDynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding. Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)\n''2005.11.29 [1.2.1]''\nfixed formatting of 'detail info' in importReport()\n''2005.11.11 [1.2.0]''\nadded 'inline' param to embed controls in a tiddler\n''2005.11.09 [1.1.0]''\nonly load HTML and CSS the first time the macro handler is called. Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.\n''2005.10.25 [1.0.5]''\nfixed typo in importReport() that prevented reports from being generated\n''2005.10.09 [1.0.4]''\ncombined documentation with plugin code instead of using separate tiddlers\n''2005.08.05 [1.0.3]''\nmoved CSS and HTML definitions into plugin code instead of using separate tiddlers\n''2005.07.27 [1.0.2]''\ncore update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()\n''2005.07.23 [1.0.1]''\nadded parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // ''MACRO DEFINITION''\n//{{{\n// Version\nversion.extensions.importTiddlers = {major: 3, minor: 0, revision: 1, date: new Date(2006,4,6)};\n\n// IE needs explicit global scoping for functions/vars called from browser events\nwindow.onClickImportButton=onClickImportButton;\nwindow.refreshImportList=refreshImportList;\n\n// default cookie/option values\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n\nconfig.macros.importTiddlers = { };\nconfig.macros.importTiddlers = {\n label: "import tiddlers",\n prompt: "Copy tiddlers from another document",\n countMsg: "%0 tiddlers selected for import",\n src: "", // path/filename or URL of document to import (retrieved from SiteUrl tiddler)\n proxy: "", // URL for remote proxy script (retrieved from SiteProxy tiddler)\n useProxy: false, // use specific proxy script in front of remote URL\n inbound: null, // hash-indexed array of tiddlers from other document\n newTags: "", // text of tags added to imported tiddlers\n addTags: true, // add new tags to imported tiddlers\n listsize: 8, // # of lines to show in imported tiddler list\n importTags: true, // include tags from remote source document when importing a tiddler\n keepTags: true, // retain existing tags when replacing a tiddler\n index: 0, // current processing index in import list\n sort: "" // sort order for imported tiddler listbox\n};\n\nconfig.macros.importTiddlers.handler = function(place,macroName,params) {\n if (!config.macros.loadTiddlers.handler)\n { alert("importTiddlers error: this plugin requires LoadTiddlersPlugin or TiddlyWiki 2.1+"); return; }\n if (!params[0]) // LINK TO FLOATING PANEL\n createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);\n else if (params[0]=="inline") {// // INLINE TIDDLER CONTENT\n createImportPanel(place);\n document.getElementById("importPanel").style.position="static";\n document.getElementById("importPanel").style.display="block";\n }\n else config.macros.loadTiddlers.handler(place,macroName,params); // FALLBACK: PASS TO LOADTIDDLERS\n}\n//}}}\n\n// // ''INTERFACE DEFINITION''\n\n// // Handle link click to create/show/hide control panel\n//{{{\nfunction onClickImportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("importPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createImportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n// // Create control panel: HTML, CSS, register for notification\n//{{{\nfunction createImportPanel(place) {\n var panel=document.getElementById("importPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.importTiddlers.css,"importTiddlers");\n panel=createTiddlyElement(place,"span","importPanel",null,null)\n panel.innerHTML=config.macros.importTiddlers.html;\n store.addNotification(null,refreshImportList); // refresh listbox after every tiddler change\n refreshImportList();\n var siteURL=store.getTiddlerText("SiteUrl"); if (!siteURL) siteURL="";\n document.getElementById("importSourceURL").value=siteURL;\n config.macros.importTiddlers.src=siteURL;\n var siteProxy=store.getTiddlerText("SiteProxy"); if (!siteProxy) siteProxy="SiteProxy";\n document.getElementById("importSiteProxy").value=siteProxy;\n config.macros.importTiddlers.proxy=siteProxy;\n return panel;\n}\n//}}}\n\n// // CSS\n//{{{\nconfig.macros.importTiddlers.css = '\s\n#importPanel {\s\n display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#importPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#importPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#importPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#importPanel .rad { width:auto; }\s\n#importPanel .chk { width:auto; margin:1px; }\s\n#importPanel .btn { width:auto; }\s\n#importPanel .btn1 { width:98%; }\s\n#importPanel .btn2 { width:48%; }\s\n#importPanel .btn3 { width:32%; }\s\n#importPanel .btn4 { width:24%; }\s\n#importPanel .btn5 { width:19%; }\s\n#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\s\n#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\s\n#importCollisionPanel { display:none; margin:0.5em 0em 0em 0em; }\s\n';\n//}}}\n\n// // HTML \n//{{{\nconfig.macros.importTiddlers.html = '\s\n<!-- source and report -->\s\n<table><tr><td align=left>\s\n import from\s\n <input type="radio" class="rad" name="importFrom" value="file" CHECKED\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=!this.checked?\s'block\s':\s'none\s'"> local file\s\n <input type="radio" class="rad" name="importFrom" value="http"\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=!this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=this.checked?\s'block\s':\s'none\s'"> web server\s\n</td><td align=right>\s\n <input type=checkbox class="chk" id="chkImportReport" checked\s\n onClick="config.options[\s'chkImportReport\s']=this.checked;"> create a report\s\n</td></tr></table>\s\n<!-- import from local file -->\s\n<div id="importLocalPanel" style="display:block;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\nlocal document path/filename:<br>\s\n<input type="file" id="fileImportSource" size=57 style="width:100%"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<!-- import from http server -->\s\n<div id="importHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\n<table><tr><td align=left>\s\n remote document URL:<br>\s\n</td><td align=right>\s\n <input type="checkbox" class="chk" id="importUseProxy"\s\n onClick="config.macros.importTiddlers.useProxy=this.checked;\s\n document.getElementById(\s'importSiteProxy\s').style.display=this.checked?\s'block\s':\s'none\s'"> use a proxy script\s\n</td></tr></table>\s\n<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\s\n onKeyUp="config.macros.importTiddlers.proxy=this.value"\s\n onChange="config.macros.importTiddlers.proxy=this.value;">\s\n<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<table><tr><td align=left>\s\n select:\s\n <a href="JavaScript:;" id="importSelectAll"\s\n onclick="onClickImportButton(this)" title="select all tiddlers">\s\n &nbsp;all&nbsp;</a>\s\n <a href="JavaScript:;" id="importSelectNew"\s\n onclick="onClickImportButton(this)" title="select tiddlers not already in destination document">\s\n &nbsp;added&nbsp;</a> \s\n <a href="JavaScript:;" id="importSelectChanges"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been updated in source document">\s\n &nbsp;changes&nbsp;</a> \s\n <a href="JavaScript:;" id="importSelectDifferences"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been added or are different from existing tiddlers">\s\n &nbsp;differences&nbsp;</a> \s\n <a href="JavaScript:;" id="importToggleFilter"\s\n onclick="onClickImportButton(this)" title="show/hide selection filter">\s\n &nbsp;filter&nbsp;</a> \s\n</td><td align=right>\s\n <a href="JavaScript:;" id="importListSmaller"\s\n onclick="onClickImportButton(this)" title="reduce list size">\s\n &nbsp;&#150;&nbsp;</a>\s\n <a href="JavaScript:;" id="importListLarger"\s\n onclick="onClickImportButton(this)" title="increase list size">\s\n &nbsp;+&nbsp;</a>\s\n <a href="JavaScript:;" id="importListMaximize"\s\n onclick="onClickImportButton(this)" title="maximize/restore list size">\s\n &nbsp;=&nbsp;</a>\s\n</td></tr></table>\s\n<select id="importList" size=8 multiple\s\n onchange="setTimeout(\s'refreshImportList(\s'+this.selectedIndex+\s')\s',1)">\s\n <!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\s\n</select>\s\n<input type=checkbox class="chk" id="chkAddTags" checked\s\n onClick="config.macros.importTiddlers.addTags=this.checked;">add new tags &nbsp;\s\n<input type=checkbox class="chk" id="chkImportTags" checked\s\n onClick="config.macros.importTiddlers.importTags=this.checked;">import source tags &nbsp;\s\n<input type=checkbox class="chk" id="chkKeepTags" checked\s\n onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing tags<br>\s\n<input type=text id="txtNewTags" size=15 onKeyUp="config.macros.importTiddlers.newTags=this.value" autocomplete=off>\s\n<div align=center>\s\n <input type=button id="importOpen" class="importButton" style="width:32%" value="open"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importStart" class="importButton" style="width:32%" value="import"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importClose" class="importButton" style="width:32%" value="close"\s\n onclick="onClickImportButton(this)">\s\n</div>\s\n<div id="importCollisionPanel">\s\n tiddler already exists:\s\n <input type=text id="importNewTitle" size=15 autocomplete=off">\s\n <div align=center>\s\n <input type=button id="importSkip" class="importButton" style="width:23%" value="skip"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importRename" class="importButton" style="width:23%" value="rename"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importMerge" class="importButton" style="width:23%" value="merge"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importReplace" class="importButton" style="width:23%" value="replace"\s\n onclick="onClickImportButton(this)">\s\n </div>\s\n</div>\s\n';\n//}}}\n\n// // Control interactions\n//{{{\nfunction onClickImportButton(which)\n{\n // DEBUG alert(which.id);\n var theList = document.getElementById('importList');\n if (!theList) return;\n var thePanel = document.getElementById('importPanel');\n var theCollisionPanel = document.getElementById('importCollisionPanel');\n var theNewTitle = document.getElementById('importNewTitle');\n var count=0;\n switch (which.id)\n {\n case 'fileImportSource':\n case 'importOpen': // load import source into hidden frame\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n if (config.macros.importTiddlers.src=="") break;\n // Load document into hidden iframe so we can read it's DOM and fill the list\n loadTiddlers(config.macros.importTiddlers.src,"all",false,false,\n function(src,tiddlers){config.macros.importTiddlers.inbound=tiddlers;window.refreshImportList(0);});\n break;\n case 'importSelectAll': // select all tiddler list items (i.e., not headings)\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count++;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectNew': // select tiddlers not in current document\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=!store.tiddlerExists(theList.options[t].value);\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value==""||!store.tiddlerExists(theList.options[t].value)) continue;\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified>0); // updated tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n if (!store.tiddlerExists(theList.options[t].value)) { theList.options[t].selected=true; count++; continue; }\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified!=0); // changed tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importToggleFilter': // show/hide filter\n case 'importFilter': // apply filter\n alert("coming soon!");\n break;\n case 'importStart': // initiate the import processing\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.index=0;\n config.macros.importTiddlers.index=importTiddlers(0);\n importStopped();\n break;\n case 'importClose': // unload imported tiddlers or hide the import control panel\n // if imported tiddlers not loaded, close the import control panel\n if (!config.macros.importTiddlers.inbound) { thePanel.style.display='none'; break; }\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n break;\n case 'importSkip': // don't import the tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status='skipped after asking'; // mark item as skipped\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index+1); // resume with NEXT item\n importStopped();\n break;\n case 'importRename': // change name of imported tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status = 'renamed from '+theImported.title; // mark item as renamed\n theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title\n theItem.value = theNewTitle.value; // change the listbox item text\n theItem.text = theNewTitle.value; // change the listbox item text\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importMerge': // join existing and imported tiddler content\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n var theText = theExisting.text+'\sn----\sn^^merged from: ';\n theText +='[['+config.macros.importTiddlers.src+'#'+theItem.value+'|'+config.macros.importTiddlers.src+'#'+theItem.value+']]^^\sn';\n theText +='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\sn'+theImported.text;\n var theDate = new Date();\n var theTags = theExisting.getTags()+' '+theImported.getTags();\n theImported.set(null,theText,null,theDate,theTags);\n theImported.status = 'merged with '+theExisting.title; // mark item as merged\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");\n theImported.status += ' by '+theExisting.modifier;\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with this item\n importStopped();\n break;\n case 'importReplace': // substitute imported tiddler for existing tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n theImported.status = 'replaces '+theExisting.title; // mark item for replace\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");\n theImported.status += ' by '+theExisting.modifier;\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importListSmaller': // decrease current listbox size, minimum=5\n if (theList.options.length==1) break;\n theList.size-=(theList.size>5)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListLarger': // increase current listbox size, maximum=number of items in list\n if (theList.options.length==1) break;\n theList.size+=(theList.size<theList.options.length)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListMaximize': // toggle listbox size between current and maximum\n if (theList.options.length==1) break;\n theList.size=(theList.size==theList.options.length)?config.macros.importTiddlers.listsize:theList.options.length;\n break;\n }\n}\n//}}}\n\n// // refresh listbox\n//{{{\nfunction refreshImportList(selectedIndex)\n{\n var theList = document.getElementById("importList");\n if (!theList) return;\n // if nothing to show, reset list content and size\n if (!config.macros.importTiddlers.inbound) \n {\n while (theList.length > 0) { theList.options[0] = null; }\n theList.options[0]=new Option('please open a document...',"",false,false);\n theList.size=config.macros.importTiddlers.listsize;\n return;\n }\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) config.macros.importTiddlers.sort='title'; // heading\n if (selectedIndex==1) config.macros.importTiddlers.sort='title';\n if (selectedIndex==2) config.macros.importTiddlers.sort='modified';\n if (selectedIndex==3) config.macros.importTiddlers.sort='tags';\n if (selectedIndex>3) {\n // display selected tiddler count\n for (var t=0,count=0; t < theList.options.length; t++) count+=(theList.options[t].selected&&theList.options[t].value!="")?1:0;\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n return; // no refresh needed\n }\n\n // get the alphasorted list of tiddlers (optionally, filter out unchanged tiddlers)\n var tiddlers=config.macros.importTiddlers.inbound;\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=new Option(tiddlers.length+' tiddler'+((tiddlers.length!=1)?'s are':' is')+' in the document',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="title" )?">":indent)+' [by title]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="modified")?">":indent)+' [by date]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="tags")?">":indent)+' [by tags]',"",false,false);\n // output the tiddler list\n switch(config.macros.importTiddlers.sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++) {\n var tiddler = tiddlers[t];\n var theSection = tiddler.modified.toLocaleDateString();\n if (theSection != lastSection) {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n case "tags":\n var theTitles = {}; // all tiddler titles, hash indexed by tag value\n var theTags = new Array();\n for(var t=0; t<tiddlers.length; t++) {\n var title=tiddlers[t].title;\n var tags=tiddlers[t].tags;\n if (!tags || !tags.length) {\n if (theTitles["untagged"]==undefined) { theTags.push("untagged"); theTitles["untagged"]=new Array(); }\n theTitles["untagged"].push(title);\n }\n else for(var s=0; s<tags.length; s++) {\n if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }\n theTitles[tags[s]].push(title);\n }\n }\n theTags.sort();\n for(var tagindex=0; tagindex<theTags.length; tagindex++) {\n var theTag=theTags[tagindex];\n theList.options[i++]=new Option(theTag,"",false,false);\n for(var t=0; t<theTitles[theTag].length; t++)\n theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n if (theList.size<config.macros.importTiddlers.listsize) theList.size=config.macros.importTiddlers.listsize;\n if (theList.size>theList.options.length) theList.size=theList.options.length;\n}\n//}}}\n\n// // re-entrant processing for handling import with interactive collision prompting\n//{{{\nfunction importTiddlers(startIndex)\n{\n if (!config.macros.importTiddlers.inbound) return -1;\n\n var theList = document.getElementById('importList');\n if (!theList) return;\n var t;\n // if starting new import, reset import status flags\n if (startIndex==0)\n for (var t=0;t<config.macros.importTiddlers.inbound.length;t++)\n config.macros.importTiddlers.inbound[t].status="";\n for (var i=startIndex; i<theList.options.length; i++)\n {\n // if list item is not selected or is a heading (i.e., has no value), skip it\n if ((!theList.options[i].selected) || ((t=theList.options[i].value)==""))\n continue;\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==t) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theImported.title);\n // avoid redundant import for tiddlers that are listed multiple times (when 'by tags')\n if (theImported.status=="added")\n continue;\n // don't import the "ImportedTiddlers" history from the other document...\n if (theImported.title=='ImportedTiddlers')\n continue;\n // if tiddler exists and import not marked for replace or merge, stop importing\n if (theExisting && (theImported.status.substr(0,7)!="replace") && (theImported.status.substr(0,5)!="merge"))\n return i;\n // assemble tags (remote + existing + added)\n var newTags = "";\n if (config.macros.importTiddlers.importTags)\n newTags+=theImported.getTags() // import remote tags\n if (config.macros.importTiddlers.keepTags && theExisting)\n newTags+=" "+theExisting.getTags(); // keep existing tags\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newTags+=" "+config.macros.importTiddlers.newTags; // add new tags\n theImported.set(null,null,null,null,newTags.trim());\n // set the status to 'added' (if not already set by the 'ask the user' UI)\n theImported.status=(theImported.status=="")?'added':theImported.status;\n // do the import!\n store.addTiddler(theImported);\n store.setDirty(true);\n }\n return(-1); // signals that we really finished the entire list\n}\n//}}}\n\n//{{{\nfunction importStopped()\n{\n var theList = document.getElementById('importList');\n var theNewTitle = document.getElementById('importNewTitle');\n if (!theList) return;\n if (config.macros.importTiddlers.index==-1)\n importReport(); // import finished... generate the report\n else\n {\n // DEBUG alert('import stopped at: '+config.macros.importTiddlers.index);\n // import collision... show the collision panel and set the title edit field\n document.getElementById('importCollisionPanel').style.display='block';\n theNewTitle.value=theList.options[config.macros.importTiddlers.index].value;\n }\n}\n//}}}\n\n// // ''REPORT GENERATOR''\n//{{{\nfunction importReport(quiet)\n{\n if (!config.macros.importTiddlers.inbound) return;\n // DEBUG alert('importReport: start');\n\n // if import was not completed, the collision panel will still be open... close it now.\n var panel=document.getElementById('importCollisionPanel'); if (panel) panel.style.display='none';\n\n // get the alphasorted list of tiddlers\n var tiddlers = config.macros.importTiddlers.inbound;\n // gather the statistics\n var count=0;\n for (var t=0; t<tiddlers.length; t++)\n if (tiddlers[t].status && tiddlers[t].status.trim().length && tiddlers[t].status.substr(0,7)!="skipped") count++;\n\n // generate a report\n if (count && config.options.chkImportReport) {\n // get/create the report tiddler\n var theReport = store.getTiddler('ImportedTiddlers');\n if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text = ""; }\n // format the report content\n var now = new Date();\n var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName\n newText +=" loaded "+count+" tiddlers from\sn[["+config.macros.importTiddlers.src+"|"+config.macros.importTiddlers.src+"]]:\sn";\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newText += "imported tiddlers were tagged with: \s""+config.macros.importTiddlers.newTags+"\s"\sn";\n newText += "<<<\sn";\n for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\sn";\n newText += "<<<\sn";\n newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n newText += "onclick=\s"story.closeTiddler('"+theReport.title+"'); store.deleteTiddler('"+theReport.title+"');\s" ";\n newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n theReport.text = newText+((theReport.text!="")?'\sn----\sn':"")+theReport.text;\n theReport.modifier = config.options.txtUserName;\n theReport.modified = new Date();\n store.addTiddler(theReport);\n if (!quiet) { story.displayTiddler(null,theReport.title,1,null,null,false); story.refreshTiddler(theReport.title,1,true); }\n }\n\n // reset status flags\n for (var t=0; t<config.macros.importTiddlers.inbound.length; t++) config.macros.importTiddlers.inbound[t].status="";\n\n // refresh display if tiddlers have been loaded\n if (count) { store.setDirty(true); store.notifyAll(); }\n\n // always show final message when tiddlers were actually loaded\n if (count) displayMessage("Imported "+count+" of "+tiddlers.length+" tiddlers from "+config.macros.importTiddlers.src);\n}\n//}}}\n\n/***\n!!!!!TW 2.1beta Core Code Candidate\n//The following section is a preliminary 'code candidate' for incorporation of non-interactive 'load tiddlers' functionality into TW2.1beta. //\n***/\n//{{{\n// default cookie/option values\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n\nconfig.macros.loadTiddlers = { label:"", prompt:"add/update tiddlers from '%0'" };\nconfig.macros.loadTiddlers.handler = function(place,macroName,params) {\n var label=(params[0].substr(0,6)=='label:')?params.shift().substr(6):this.label;\n var prompt=(params[0].substr(0,7)=='prompt:')?params.shift().substr(6):this.prompt;\n var filter="updates";\n if (params[0]=='all' || params[0]=='new' || params[0]=='changes' || params[0]=='updates'\n || params[0].substr(0,8)=='tiddler:' || params[0].substr(0,4)=='tag:')\n filter=params.shift();\n var src=params.shift(); if (!src || !src.length) return; // filename is required\n var quiet=(params[0]=="quiet"); if (quiet) params.shift();\n var ask=(params[0]=="confirm"); if (ask) params.shift();\n if (label.trim().length) {\n // link triggers load tiddlers from another file/URL and then applies filtering rules to add/replace tiddlers in the store\n createTiddlyButton(place,label.format([src]),prompt.format([src]),function(){loadTiddlers(src,filter,quiet,ask,copyTiddlersToStore);})\n }\n else {\n // load tiddlers from another file/URL and then apply filtering rules to add/replace tiddlers in the store\n loadTiddlers(src,filter,quiet,ask,copyTiddlersToStore);\n }\n}\n\nfunction copyTiddlersToStore(src,tiddlers,filter,quiet,ask)\n{\n var count=0;\n if (tiddlers) for (var t=0;t<tiddlers.length;t++) {\n var theInbound = tiddlers[t];\n var theExisting = store.getTiddler(theInbound.title);\n if (theInbound.title=='ImportedTiddlers')\n continue; // skip "ImportedTiddlers" history from the other document...\n\n // apply the all/new/changes/updates filter (if any)\n if (filter && filter!="all") {\n if ((filter=="new") && theExisting) // skip existing tiddlers\n { tiddlers[t].status="skipped - tiddler already exists"; continue; }\n if ((filter=="changes") && !theExisting) // skip new tiddlers\n { tiddlers[t].status="skipped - no existing tiddler"; continue; }\n if ((filter.substr(0,4)=="tag:") && theInbound.tags.find(filter.substr(4))==null) // must match specific tag value\n { tiddlers[t].status="skipped - does not match tag"; continue; }\n if ((filter.substr(0,8)=="tiddler:") && theInbound.title!=filter.substr(8)) // must match specific tiddler name\n { continue; } // no status means don't show in report\n if (store.tiddlerExists(theInbound.title) && ((theExisting.modified.getTime()-theInbound.modified.getTime())>=0)) // tiddler is unchanged\n { tiddlers[t].status="skipped - tiddler is unchanged"; continue; }\n }\n // get confirmation if required\n if (ask && !confirm((theExisting?"Update":"Add")+" tiddler '"+theInbound.title+"'\snfrom "+src))\n { tiddlers[t].status="skipped - cancelled by user"; continue; }\n // DO IT!\n store.addTiddler(theInbound);\n tiddlers[t].status=theExisting?"updated":"added"\n count++;\n }\n\n // generate a report\n if (count && config.options.chkImportReport) {\n // get/create the report tiddler\n var theReport = store.getTiddler('ImportedTiddlers');\n if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text = ""; }\n // format the report content\n var now = new Date();\n var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName+" loaded "+count+" tiddlers from\sn[["+src+"|"+src+"]]:\sn";\n newText += "<<<\sn";\n for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\sn";\n newText += "<<<\sn";\n newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n newText += "onclick=\s"story.closeTiddler('"+theReport.title+"'); store.deleteTiddler('"+theReport.title+"');\s" ";\n newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n theReport.text = newText+((theReport.text!="")?'\sn----\sn':"")+theReport.text;\n theReport.modifier = config.options.txtUserName;\n theReport.modified = new Date();\n store.addTiddler(theReport);\n if (!quiet) { story.displayTiddler(null,theReport.title,1,null,null,false); story.refreshTiddler(theReport.title,1,true); }\n }\n\n // refresh display if tiddlers have been loaded\n if (count) { store.setDirty(true); store.notifyAll(); }\n\n // always show final message when tiddlers were actually loaded\n if (!quiet||count) displayMessage("Loaded "+count+" of "+tiddlers.length+" tiddlers from "+src);\n}\n\nfunction loadTiddlers(src,filter,quiet,ask,callback) {\n if (!quiet) clearMessage();\n if (src=="ask") src=prompt("Enter a local path/filename or a remote URL");\n if (!src || !src.length) return; // filename is required\n if (src.substr(0,4)!="http") {\n if (!quiet) displayMessage("Opening local document: "+ src);\n var txt=loadFile(src);\n if(!txt) { if (!quiet) displayMessage("Could not open local document: "+src); }\n else {\n var start=txt.indexOf('<div id="storeArea">');\n var end=txt.indexOf('</body>');\n var sa="<html><body>"+txt.substring(start,end)+"</body></html>";\n if (!quiet) displayMessage(txt.length+" bytes in document. ("+sa.length+" bytes used for tiddler storage)");\n var tiddlers = getTiddlersFromHTML(convertUTF8ToUnicode(sa));\n var count=tiddlers?tiddlers.length:0;\n if (!quiet) displayMessage("Found "+count+" tiddlers in "+src);\n if (callback) callback(src,tiddlers,filter,quiet,ask);\n }\n }\n else {\n if (!quiet) displayMessage("Opening remote document: "+ src);\n var x; // XML object\n try {x = new XMLHttpRequest()}\n catch(e) {\n try {x = new ActiveXObject("Msxml2.XMLHTTP")}\n catch (e) {\n try {x = new ActiveXObject("Microsoft.XMLHTTP")}\n catch (e) { return }\n }\n }\n x.onreadystatechange = function() {\n if (x.readyState == 4) {\n if (x.status == 200) {\n var start=x.responseText.indexOf('<div id="storeArea">');\n var end=x.responseText.indexOf('</body>',start);\n var sa="<html><body>"+x.responseText.substring(start,end)+"</body></html>";\n if (!quiet) displayMessage(x.responseText.length+" bytes in document. ("+sa.length+" bytes used for tiddler storage)");\n var tiddlers = getTiddlersFromHTML(sa);\n var count=tiddlers?tiddlers.length:0;\n if (!quiet) displayMessage("Found "+count+" tiddlers in "+src);\n if (callback) callback(src,tiddlers,filter,quiet,ask);\n }\n else\n if (!quiet) displayMessage("Could not open remote document:"+ src+" (error="+x.status+")");\n }\n }\n if ((document.location.protocol=="file:") && (typeof(netscape)!="undefined")) { // UniversalBrowserRead only works from a local file context\n try { netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')}\n catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }\n }\n try {\n var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();\n x.open("GET",url,true);\n if (x.overrideMimeType) x.overrideMimeType('text/html');\n x.send(null);\n }\n catch (e) {\n if (!quiet) {\n displayMessage("Could not open remote document: "+src);\n displayMessage(e.description?e.description:e.toString());\n }\n }\n }\n}\n\nfunction getTiddlersFromHTML(html)\n{\n // load html into iframe document\n var f=document.getElementById("loaderFrame"); if (f) document.body.removeChild(f);\n f=document.createElement("iframe"); f.id="loaderFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n d.open(); d.writeln(html); d.close();\n\n // read tiddler DIVs from storeArea DOM element \n var sa = d.getElementById("storeArea");\n if (!sa) return null;\n sa.normalize();\n var nodes = sa.childNodes;\n if (!nodes || !nodes.length) return null;\n var tiddlers = [];\n for(var t = 0; t < nodes.length; t++) {\n var title = null;\n if(nodes[t].getAttribute)\n title = nodes[t].getAttribute("tiddler");\n if(!title && nodes[t].id && (nodes[t].id.substr(0,5) == "store"))\n title = nodes[t].id.substr(5);\n if(title && title != "")\n tiddlers.push((new Tiddler()).loadFromDiv(nodes[t],title));\n }\n return tiddlers;\n}\n//}}}
As was mentioned previously, patch CD's come out every 3-6 months which leaves time in between for when you may need something fixed or new functionality sooner. In this case individual patches may need to be applied. Patches can be downloaded from http://itrc.hp.com. When downloaded the patch will be in "shar" format. To unpack it simply run the command "sh " This will extract 2 files. The Patch text or README that explains what the patch fixes or what functionality it provides and the actual patch depot. See section 2.4 for details about depots and how to install them.\n\nIf the patch you need requires other patches (you can find out from the dependencies section of the text file) you may want to create a single depot and install all the patches at once. Something like the following csh script can be useful for installing multiple patches in one pass. This is particularly useful when installing patches that require a reboot. It can also help create one depot that can be used on multiple machines.\n\n cd \n foreach patch (`ls PH*`)\n sh $patch\n swcopy -s `pwd`/${patch}.depot @ `pwd`/depot\n end\n\nThis will unshar each patch and add it to the new depot `pwd`/depot. This depot will be automatically registered as a valid install depot. Now you can use the swinstall command explained in section 2.4 to install all the patches at once. Once you've finished with the depot you will need to use the swremove command to remove it cleanly. If you simple use the "rm" command the depot will still be registered even though the directory doesn't exist.\n\nIn general you should not need to install individual patches. If you have a problem with your machines please let us know so that will can try to find the appropriate patch(es) and test them in our lab before forwarding them on to you. We will also create a depot that contains all the patches you need. Should you have a problem that has not been previously identified we can also submit the problem directly to the labs that work on patches. If we can keep our lab as well as all of our partner's machines in sync relative to patches, Extension Paks, Quality Paks, ACE bundles, and DART released we will all benefit . Our department will benefit by having answers to questions and spending fewer man hours working problems. You will benefit by getting your problems solved faster and our customers will benefit by knowing exactly what patches to load that guarantees your product will behave normally in their environment.
TiddlyWiki lets you write ordinary HTML by enclosing it in {{{<html>}}} and {{{</html>}}}:\n\n<html>\n<a href="javascript:;" onclick="onClickTiddlerLink(event);" tiddlyLink="TiddlyWiki" style="background-color: yellow;">Link to wikiwords from HTML</a>\n</html>\n\nThe source for the above is:\n\n{{{\n<html>\n<div style="background-color: yellow;">\n<a href="javascript:;" onclick="onClickTiddlerLink(event);" tiddlyLink="Macros">Link to wikiwords from HTML</a>\n</div>\n</html>\n}}}\n
The purpose of this document is to provide experienced HP-UX and Linux system administrators with tuning information that is specific to CAEApplications. It is not intended to replace HP-UX and [[Linux]] documentation and training. It assumes the reader is familiar with general HP-UX and [[Linux]] tasks, including basic OperatingSystem installation, KernelParametersAdjustment, FileSystems setup.\n\nComplete HP-UX and [[Linux]] documentation can be found at http://docs.hp.com/.
Interconnects come in different norms, implemented by different vendors using different protocols:\n*Quadrics, ELAN3, ELAN4 protocols, 800MB/sec bandwidth, 3usec MPI latency\n*Infiniband (Voltaire, Cisco/TopSpin, SilverStorm, Mellanox vendors), VAPI, UDAPL, ITAPI, protocols, 2GB/sec bandwidth, 5usec MPI latency\n*Myrinet REV D,E (Myricom vendors), GM2.1, MX protocols, 500,800MB/sec, 7,6usec MPI latency\n*HyperFabric2, TCP/IP, HMP protocols\n*Gigabit Ethernet (ProCurve Networking vendor), TCP/IP protocol, 80MB/sec, 40usec MPI latency\n*Crossbar, backplane, shared memory, ccUMA, ccNUMA\n**usec=microsecond\n{{{man mpirun}}}:\n -elan/-ELAN Options -elan -ELAN -gm -GM -vapi -VAPI -udapl -UDAPL -itapi -ITAPI are provided for explicit command line interconnect selection. The lower case option is taken as advisory and means use the interconnect if it's available. The upper case option is taken as mandatory and instructs MPI to abort if the interconnect is unavailable. The interaction between these options and the related MPI_IC_ORDER variable is that any command line interconnect selection here is implicitly prepended to MPI_IC_ORDER.\n -VAPI Forces infiniband to be used with the VAPI protocol. See -ELAN for further information on interconnect selection.\n -vapi Causes the VAPI protocol to be used if it is available, See -ELAN for further information on interconnect selection.\n -UDAPL Forces infiniband to be used with the UDAPL protocol. See -ELAN for further information on interconnect selection.\n -udapl Causes the UDAPL protocol to be used if it is available, See -ELAN for further information on interconnect selection.\n -ITAPI Forces infiniband to be used with the ITAPI protocol. See -ELAN for further information on interconnect selection.\n -itapi Causes the ITAPI protocol to be used if it is available, See -ELAN for further information on interconnect selection.\n -TCP Forces TCP/IP to be used, even if a faster protocol is available. -prot Prints the communication protocol between each host (i.e. TCP/IP, IB, HMP, or shared memory).\nOne can set MPRUN_OPTIONS accordingly {{{man mpienv}}}:\n% export MPIRUN_OPTIONS="-prot"\nto see what interconnect was used, for example:\n0 : SHM VAPI VAPI VAPI\n1 : VAPI SHM VAPI VAPI\n2 : VAPI VAPI SHM VAPI\n3 : VAPI VAPI VAPI SHM\n\n0 : SHM SHM SHM SHM\n1 : SHM SHM SHM SHM\n2 : SHM SHM SHM SHM\n3 : SHM SHM SHM SHM\n\n0 : SHM IT IT IT\n1 : IT SHM IT IT\n2 : IT IT SHM IT\n3 : IT IT IT SHM\n
[[Hewlett-Packard|http://www.hp.com]] Workstation and Server products are used for Computer-Aided Engineering http://www.hp.com/go/cae to perform computationally and graphic intensive problems. HP has worked together steadily with CAE application providers for the past two decades to leverage accelerating hardware compute power and software functionality. HP maintains technical exchanges with application provider engineers to maximize performance on current products and influence the design of future products.\n\nThis [[Document]] can be found on http://www.hp.com/go/cae and describes HardwareTuning, KernelTuning and IOTuning required for most CAEApplications optimal performance on [[HP-UX]] and other [[Platforms]]. Specific application tunings may be found in CAEApplications.\nThe HP-UXChecklist may help gauge a current site with respect to HP CAE Tuning issues.\n
Either load [[TCOE]] or use {{{/usr/sbin/sam}}} to set kernel parameters to their recommended values in KernelTuning or use the manual process outlined here. Use the following only for adjusting the kernel parameters and not to add modules. If you need to add additional drivers or kernel modules you will need to use the kmsystem command instead of editing the system file.\n\nTo modify the kernel parameters there are two commands, system_prep and mk_kernel, that can be found in the /usr/lbin/sysadm directory. These are the commands that are used to build the new kernel. There is also a file named "system" which is generated by the system_prep command and used as input to the mk_kernel command to produce a new kernel with the proper kernel parameter settings. \n1)Generate current kernel configuration file consisting of the installed drivers and parameter settings:\n{{{\ncd /stand/build\n/usr/lbin/sysadm/system_prep -v -s system\n}}}\n2)Edit {{{system}}}\n3)Generate the new {{{vmunix_test}}} kernel:\n{{{\n/usr/sbin/mk_kernel -s system\n}}}\n4)Save old kernel files and move the new ones into place:\n{{{\nmv /stand/system /stand/system.prev \nmv /stand/vmunix /stand/vmunix.prev\nmv /stand/build/system /stand/system \nmv /stand/build/vmunix_test /stand/vmunix\n}}}\n5)Reboot system:\n{{{\n/usr/sbin/shutdown -r\n}}}\n6)If new kernel fails to boot then boot system from the backup kernel, /stand/vmunix.prev, and repeat process of creating new kernel.\n
Recommended CAE kernel parameter settings for both workstations and servers are listed in the following table. The {{{kmtune -l}}} command will print the current values of the kernel parameters. Some of them may need to be modified for optimal performance. (KernelParametersAdjustment).\n<html>\n<table class=MsoNormalTable border=1 cellspacing=1 cellpadding=0 width=419\n style='width:314.6pt;mso-cellspacing:.7pt;mso-padding-alt:1.5pt 1.5pt 1.5pt 1.5pt'>\n <tr style='mso-yfti-irow:0;height:76.5pt'>\n <td width=180 valign=top style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:76.5pt'>\n <p class=MsoNormal><o:p>&nbsp;</o:p></p>\n </td>\n <td width=237 valign=top style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:76.5pt'>\n <p><b><span style='font-size:10.0pt;font-family:Arial;color:black'>Recommended\n CAE Parameters for Servers and Workstations</span></b></p>\n\n </td>\n </tr>\n <tr style='mso-yfti-irow:1;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>create_fastlinks</span></span><span style='font-size:10.0pt;\n font-family:Arial;color:black'> </span></p>\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>1</span></p>\n\n </td>\n </tr>\n <tr style='mso-yfti-irow:2;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>dbc_min_pct</span></span></p>\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>see chart above</span></p>\n\n </td>\n </tr>\n <tr style='mso-yfti-irow:3;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>dbc_max_pct</span></span></p>\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>same as <span class=SpellE>dbc_min_pct</span></span></p>\n\n </td>\n </tr>\n <tr style='mso-yfti-irow:4;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>maxdsiz</span></span><span style='font-size:10.0pt;font-family:\n Arial;color:black'> (11.00)</span></p>\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>3221225472</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:5;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>maxdsiz</span></span><span style='font-size:\n 10.0pt;font-family:Arial;color:black'> (11.11_or_greater)</span></p>\n </td>\n\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>4026531840</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:6;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span style='font-size:10.0pt;font-family:Arial;color:black'>maxdsiz_64bit</span></p>\n </td>\n\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>274877906944</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:7;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>maxfiles</span></span></p>\n </td>\n\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>2048</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:8;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>maxfiles_lim</span></span></p>\n </td>\n\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>2048</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:9;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>maxssiz</span></span></p>\n </td>\n\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>100610048</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:10;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span style='font-size:10.0pt;font-family:Arial;color:black'>maxssiz_64bit</span></p>\n </td>\n\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>268435456</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:11;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>maxswapchunks</span></span></p>\n </td>\n\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>16384</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:12;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>maxtsiz</span></span></p>\n </td>\n\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>1073741824</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:13;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span style='font-size:10.0pt;font-family:Arial;color:black'>maxtsiz_64bit</span></p>\n </td>\n\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>4294967296</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:14;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>maxusers</span></span><span style='font-size:10.0pt;font-family:\n Arial;color:black'> </span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>250</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:15;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>maxvgs</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='color:black'>80</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:16;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>max_thread_proc</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>2048</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:17;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>msgmax</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>32768</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:18;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>msgmnb</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>65535</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:19;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>msgmni</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>512</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:20;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>msgseg</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>20480</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:21;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>msgssz</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>128</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:22;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>msgtql</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>5120</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:23;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>nfile</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>8192</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:24;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>nflocks</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>2048</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:25;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>ninode</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>8192</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:26;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='color:black'>nkthread</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='color:black'>6000</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:27;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='color:black'>nproc</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='color:black'>4096</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:28;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>npty</span></span><span style='font-size:10.0pt;font-family:\n Arial;color:black'> </span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>200</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:29;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>nstrpty</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>200</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:30;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>nswapdev</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>25</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:31;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>semume</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>512</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:32;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>shmmni</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>512</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:33;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>shmseg</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>512</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:34;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>shmmax</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>2147483648</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:35;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span style='font-size:10.0pt;font-family:Arial;color:black'>STRMSGSZ</span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>65535</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:36;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>swapmem_on</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>0</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:37;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p><span class=SpellE><span style='font-size:10.0pt;font-family:Arial;\n color:black'>vps_ceiling</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p align=right style='text-align:right'><span style='font-size:10.0pt;\n font-family:Arial;color:black'>64</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:38;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>vx_fancyra_enable</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>1</span></p>\n </td>\n </tr>\n <tr style='mso-yfti-irow:39;mso-yfti-lastrow:yes;height:12.0pt'>\n <td width=180 style='width:134.65pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;\n font-family:Arial;color:black'>vx_ncsize</span></span></p>\n\n </td>\n <td width=237 style='width:177.85pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;\n height:12.0pt'>\n <p class=MsoNormal align=right style='text-align:right'><span\n style='font-size:10.0pt;font-family:Arial;color:black'>8000</span></p>\n </td>\n </tr>\n</table>\n</html>
LS-DYNA is available from [[Livermore Software Technology Corporation|http://www.lstc.com]] \nHP Strategic Alliance Manager for LSTC - Brian Lowe\nTechnical Support Yih Yih Li nyih-yih.lin@hp.com\nUses HP-MPI to achieve parallel performance.\n\nUse the settings outlined above for basic HP-UX CAE tuning. \n\nTo run in parallel using MPI:\n To run the job within a single node (machine), do:\n mpirun -np # mpp970_executable <LS-DYNA command options>\n To avoid performance penalty due to slow I/O, it is preferable that the above command be run on a local file system. \n To run the job across a cluster, first determine a working directory on each node with the same name to be used as the MPP DYNA (or MPI) working directory. To avoid performance penalty due to slow I/O, it is preferable that this working directory be local to each node. Let the name of this working directory be represented as <workdir>. Then invoke the following command\n{{{ mpirun -f appfile}}}\n where appfile contains:\n{{{\n -h hostname_1st -np #1 -e MPI_WORKDIR=<workdir> mpp970_executable \s\n <LS-DYNA command options>\n -h hostname_2nd -np #2 -e MPI_WORKDIR=<workdir> mpp970_executable\n -h hostname_3rd -np #3 -e MPI_WORKDIR=<workdir> mpp970_executable\n -h hostname_4th -np #4 -e MPI_WORKDIR=<workdir> mpp970_executable\n .......\n}}}\n hostname_1st is the hostname of the node where your submit the "mpirun" command (root node), and hostname_2nd, hostname_3rd, hostname_4th and so on are hostnames for other nodes. #1, #2, #3, #4 are the number of processors used from each node. Different number of processors can be used from each node.
MADYMO (Mathematical Dynamical Models) is a software engineering tool developed by [[TNO|http://www.madymo.com]] for occupant safety analysis combining multibody and Finite Element techniques. MADYMO allows users to design and optimise vehicle structures, components and safety systems.\nHP Strategic Alliance Manager for TNO - Lee Fisher\nUses HP-MPI to achieve parallel performance.
MAGMASOFT is a comprehensive simulation tool for the technological and quality focused production of castings. Simulation capabilities provide a better understanding of mold filling, solidification, mechanical properties, thermal stresses and distortions for design, production, and quality departments. \nUses HP-MPI to achieve parallel performance.
MDNastran is available from [[MSCSoftware|http://www.mscsoftware.com]] \nHP Strategic Alliance Manager for MSC.Software - Jeff Wall\nMDNastran is a bundle of MSCNastran, MSCMarc, MSCDytran and LS-DYNA into one product.
MSCDytran is available from [[MSCSoftware|http://www.mscsoftware.com]] \nHP Strategic Alliance Manager for MSC.Software - Jeff Wall
MSCManufacturing is available from [[MSCSoftware|http://www.mscsoftware.com]] \nHP Strategic Alliance Manager for MSC.Software - Jeff Wall\nMSCManufacturing is a combined package offered from MSCSoftware and includes some of the MSCSuperForm capabilities under MSCSuperForge as well.\n
MSCMarc is available from [[MSCSoftware|http://www.mscsoftware.com]] with current released MSCMarcVersions.\n\nHP Strategic Alliance Manager for MSC.Software - Jeff Wall\nHP Technical Support for MSCMarc - OlivierSchreiber\nUses HP-MPI to achieve parallel performance.\nCheck whether the current site MSCMarc installation uses HP-MPI by editing the <marc_root>/tools/include file or by running the <marc_root>/tools/maintain script.\n\nSee MSCMarcTuningGuide relative for this application specific details.
\nIn the text, strings enclosed in <brackets> are not meant to be \ncopied literally but substituted with actual user-chosen values.\nFor example:\n{{{\n<install_dir>/tools/run_marc -jid <mydataset> -v no -b no\n}}}\ncould mean:\n{{{\n/usr/local/marc/tools/run_marc -jid carbody -v no -b no\n}}}\nwhere the installation directory is /usr/local/marc, carbody is the dataset run by the user.\nThe {{{<install_dir>/tools/run_marc}}} contains the description of all the command line flags.\n
This tuning guide is specific to MSCMarc whereas the main document in [[Introduction]] addresses issues common to all CAEApplications.\nInformation is compiled from MSCSoftware MSCMarc documentation Library's Volumes A, B, C.\n\nOnce HardwareTuning, KernelTuning and IOTuning have been performed, MSCMarc has a substantial set of options that affect performance.\nThere is no single set of default options on a given MSCMarcCommand that will garantee the best performance on all Platforms, models and datasets.\n\nHowever, some issues sometimes need to be addressed:\n\nMSCMarcResourceRequirements\nMSCMarcSharedMemoryParallelProcessing\nMSCMarcDistributedMemoryParallelProcessing\nMSCMarcSolvers\nMSCMarcVersions\nMSCMarcRestartMechanisms\nMSCMarcCommonJobFailures\n\n
2001r3, 2003r1, 2003r2, 2005r1, 2005r1.1, 2005r2, 2005r3\nMost common versions are: \n2001r3, 2003r1, 2003r2, 2005r1, 2005r1.1, 2005r2, 2005r3\nfrom MSCMarcVersionsHistory
MSC.Marc/Mentat release history on HP platforms:\n{{{\nVersion Date OS/Architecture\nv2001r3 3/2002 HP-UX 11.00 (64 bit) PA-RISC 2.0\nv2001r3 3/2002 NEC-Linux 2.4.9 (64 bit) Itanium 1\nv2001r3 4/2002 HP-UX 11.20 (64 bit) Itanium 1\n\nv2003r1 3/2003 HP-UX 11.00 (64 bit) PA-RISC 2.0\nv2003r1 3/2003 HP-UX 11.22 (64 bit) Itanium 2 \nv2003r1 3/2003 NEC-Linux 2.4.18 (64 bit) Itanium 2\n\nv2003r2 9/2003 HP-UX 11.00 (64 bit) PA-RISC 2.0\nv2003r2 9/2003 HP-UX 11.22 (64 bit) Itanium 2 \nv2003r2 9/2003 NEC-Linux 2.4.18 (64 bit) Itanium 2\n\nv2005b2 4/2004 HP-UX 11.00 (64 bit) PA-RISC 2.0\nv2005b2 4/2004 HP-UX 11.22 (64 bit) Itanium 2 \nv2005b2 4/2004 HP-DEC Tru64 5.1 (64 bit) Alpha\nv2005b2 4/2004 Linux RH EL2.1 (64 bit) Itanium 2\nv2005b2 4/2004 Linux RH 6 (32 bit) x86\nv2005b2 4/2004 Linux RH 9 (32 bit) x86\nv2005b2 4/2004 MS Windows 2000 (32 bit) x86\nv2005b3 6/2004 \nv2005 9/2004 \nv2005r1 9/2004 \nv2005r2 4/2005 \nv2005r3 3/2006 \n}}}
MSCNastran is available from [[MSCSoftware|http://www.mscsoftware.com]] with current released MSCNastranVersions\n\nHP Strategic Alliance Manager for MSCSoftware - Jeff Wall\nHP Technical Support for MSCNastran - OlivierSchreiber\nUses HP-MPI to achieve parallel performance.\n{{{\n<install_dir>/bin/msc<version> nastran system\n}}}\nprints out some hardware characteristics\nif \n{{{/usr/contrib/bin/machinfo}}}\nis not available.\n\nMSCNastran is an extremely memory and IO intensive application. \nFor acceptable throuput performance it is necessary to have no more than 2 jobs per filesystem.\nFor acceptable MSCNastranDistributedMemoryParallelProcessing performance it is necessary to have a separate IO channel per Core.\nEach 1GHz Itanium2 CPU job consumes 180MB/s of IOBandwidth. The newer faster CPU's (Madison) would consume 270MB/s and the latest Montecito CPU's would consume 300MB/s per CPU. The IOBandwidth then needs to be sized accordingly.\n[[MSCSoftwareStandardBenchmarks|http://www.mscsoftware.com/support/prod_support/nastran/performance/]] shows an advantage in using the Itanum2 with HP-UX or [[Linux]] among the various [[Platforms]] available.\nSee MSCNastranTuningGuide relative to this application details.\n
Nastran I/O pattern:\n*Typically 10 times more reads than write request\n*Majority sequential\n*More complex sequential access patterns\n\nFor a given core memory allocation selected on the command line, a job is IO bound when wall time is much greater than the user+sys time and it is known there is no paging/swapping and this is a quiet system with no one else running applications.\nOptions available to accomplish MSCNastranBufferedIO are:\n* buffpool=bpool=sys114=integer Default: 37, maximum=100\nSpecifies the number of GINO and/or executive blocks that are placed in buffer pool to substitute IO with memory.\n* smemory=value or smem=value (default=100)\nSpecifies the default number of GINO blocks to reserve for scratch memory in units of (buffsize-1) [[Words]] to substitute I/O with memory. Overridden by the FMS statement ASSIGN SCRATCH(MEM=value).\n* sysfield=buffio=yes,wnum=number,wsize=size (Default buffio=no,wnum=4,wsise=128)\nBuffered I/O instructs MSC.Nastran to “buffer” or use intermediate memory are to hold records of a file before either writing them out to disk or copying them to the MSC.Nastran internal areas. The primary purpose for using BufferedIO is to increase data reuse and, in some cases, to increase the actual read/write data lengths beyond that normally used by MSCNastran. Buffered IO can be used for both permanent and temporary DBSETS. Until future releases, the command line only allows a DBSet-wide setup of such buffering and targeting specifically scratch-type DBSet is only possible through FMS editing using the ASSIGN statement SYS field. (See MSCNastranDocumentationLibrary's InstallationOperationsGuide's Section 5.5 managing DBSets for detailed syntax on how achieve this).\n`wsize' and `wnum' parameters specify the size and number of the buffers used to hold file records.\nThe larger the buffer, the less often actual physical read/write operations are needed when the file is sequentially read or written. Multiple buffers allow several I/O streams to be active in the same file.\nwnum=number Default: 4\nSpecifies the number of buffers that will be maintained for each buffered file. The use of multiple buffers permits\nmultiple I/O streams to target a file (e.g., simultaneously reading one matrix and writing another) without forcing an excessive number of buffered read/writes. The number must be between 1 through 16 inclusive, values outside of this range are ignored without acknowledgement.\nwsize=size Default: 128 KB\nspecifies the size of the buffer read from or written to disk. If the buffer is the same size as the file, then the entire file is memory resident. If the buffer is smaller than the file, then any portion of the file within the buffer or buffers can be directly accessed; the rest of the file cannot be accessed until a buffer is read to include the desired file location. The buffer size is limited to 25% of the available address space. The address space limit is displayed by the “limits” special function {{{<install_dir>/bin/msc<version> nastran limits}}} as “Virtual Address Space” limit\nIf wsize=0 is specified for a read-only file, the entire file will be buffered into memory, subject to the 25% address space limit. If size is less than the file’s BUFFSIZE, then size is multiplied by BUFFSIZE. However, an undocumented feature allows the overriding of wsize limitations. The - (negative) sign is used in the buffer size to use extrememly large buffers, like 16 buffers of size 4 GB each-but at a large memory expense. \n{{{sysfield='buffio=yes,wnum=16,wsize=-256kb'}}}\nOf course this I/O memory allocation should not exceed the amount available on the system minus the mem=keyword value or paging and slow down will occur. With this option, the Nastran job would use the memory requested on the command-line plus the additional memory specified on the assign statements, but the I/O for what fits in this memory would actually be replaced by memory copies which are faster than disk I/O - so this can speed up I/O limited jobs - if spare memory is available. This is a overall better method than the old smem method because it allocates additional memory not part of the mem=xxx to use for scratch dbsets.\n* use_aio=yes (default no) (environment variable USE_AIO)\nFor a large I/O job and a weak I/O configuration the AIO feature may help reduce the wall time of the job.\nFor a good I/O configuration setup this feature won't speed up Nastran.\nAs a general rule, statics won't use AIO but modes with a large model's SCR300 which doesn't fit into buffer cache will benefit from AIO. The [[f04]] file provides the size of the SCRATCH and SCR300 max size - if they fit into buffer cache then AIO won't speed up MSCNastran. Environment variables are available for further control:\nUSE_AIO - on/off switch to enable (if not null, same as use_aio=yes keyword)\nAIO_FLIST - comma separated list of files to use async i/o on (default is *.SCRATCH and *.SCR300)\nAIO_MINMULT - the multiplier of nbytes for min buffer size (default is 1 - so each buffer is same size as request)\nAIO_MAXBSIZE - override MIN_MULT for absolute size of each buffer (if instead of multiply each buffer by some size you wanted a specific size then you could set this)\nAIO_THREADS - max number of active concurrent i/o threads per fd\nAIO_BUFFERS - number of i/o buffers to allocate per fd\nAIO_TIMER - to calculate and print extra timing info\nAIO_OUTPUT - to print i/o statistics at end of .log file-with use_aio=yes. All read-ahead statistics get written out in addtion to just read/write counts, and this helps to decide if using AIO helps or to adjust AIO_MINMULT \n(or AIO_MAXBSIZE), AIO_THREADS and AIO_BUFFERS\nExample output:\nfilename = <./myJob.T18933_49.SCR300>\nfileindex = 5\ntotal_reads = 717\ntotal_writes = 796\ntotal read cputime = 0.001403\ntotal read walltime = 0.089316\ntotal write cputime = 0.001465\ntotal write walltime = 0.143461\ntotal read malloc wall = 0.000000\ntotal read malloc cpu = 0.000000\nOS/Filesystem I/O handling options:\nAIO_VX_RANDOM - set to disable filesystem read-ahead logic\nAIO_VX_SEQ - set to enable filesystem read-ahead logic\nAIO_VX_NOREUSE - set to mark BufferCache data old - ok to reuse immediately\nAIO_VX_UNBUF - set to bypass BufferCache for aio threads only\nI/O threads control options:\nMP_THREADSTACK_SIZE - to change the threads stacksize\nMP_SCHEDULING_TYPE - to change the threads scheduling\nMP_THREAD_SCOPE - to change from mxn (11.22 default) to mx1 (11.11 and earlier default)\nFor v2004.0.0 and above only set MP_THREAD_SCOPE to `bound'
{{{\n<install_dir>/bin/msc<version> nastran <mydataset> mem=<memory> rcf=rcf \s\nsdir=<listOfFileSystems> dmp=<numberOfMPIProcesses>\n}}}\nIn the text, strings enclosed in <brackets> are not meant to be \ncopied literally but substituted with actual user-chosen values.\nFor example, the above could mean:\n{{{\n/usr/local/nastran/bin/msc2005 nastran carbody mem=100MB rcf=rcf sdir=/tmp dmp=2\n}}}\nwhere the installation directory is /usr/local/nastran , the version is 2005 \ncarbody is the dataset run by the user and rcf is the path of the RunConfigurationFile.\nThe .log file shows what options were set by the command line and by the local and installation-wide RunConfigurationFile[s] with the following order of precedence:\n\nCommand line specified values including NastranSystemCells.\nCommand-line specified RunConfigurationFile values.\nLocal, {{{.nast<version>rc}}} RunConfigurationFile values.\nUser Home directory RunConfigurationFile (named {{{.nast<version>rc}}}) values.\nNode {{{<install_dir>/conf/net/<node>/nast<version>rc}}} RunConfigurationFile values.\nArchitecture {{{<install_dir>/conf/<arch>/nast<version>rc}}} RunConfigurationFile values.\nSystem-wide {{{<install_dir>/conf/nast<version>rc}}} RunConfigurationFile values.\nCorresponding input data file statement as in:\nNASTRAN SYSTEM (28) = xxx\nMore details are covered in InstallationOperationsGuide, including environment variable usage.\nThe meaning of these command line options is listed by the following command:\n{{{\n<install_dir>/bin/msc<version> nastran help all\n}}}\n
The following are limited to performance MSCNastranCommonJobFailures.\n{{{\n*** USER FATAL MESSAGE 1221 (GALLOC)\n THE PARTITION OF THE SCRATCH DBSET USED FOR DMAP-SCRATCH DATABLOCKS IS FULL.\n USER INFORMATION: DMAP SCRATCH PARTITION WILL NOT SPILL INTO 300-SCRATCH PARTITION\n USER ACTION: 1. SET NASTRAN SYSTEM(151)=1, OR\n 2. INCREASE THE NUMBER OF MEMBERS, AND/OR THEIR MAXIMUM SIZE,\n FOR THE SCRATCH DBSET ON THE "INIT" STATEMENT.\n}}}\nRemedy: Add {{{sys151=1}}} on MSCNastranCommand or in RunConfigurationFile file.\n{{{\n*** USER FATAL MESSAGE 1012 (GALLOC)\n DBSET SCRATCH IS FULL AND NEEDS TO BE EXPANDED.\n USER ACTION: SEE THE MSC.NASTRAN INSTALLATION AND OPERATIONS GUIDE OR\n TAN 4893 ON THE MSC WEB SITE FOR METHODS TO MAKE LARGER DATABASES.\n}}}\nRemedy: Increase {{{sscr}}} value (default=1000000) of [[Buffsize]] GINO blocks or increase [[Buffsize]] or specify an absolute size with the {{{B, W, KB, KW, K, MB, MW, M, GB, GW, G}}} modifiers or use {{{estimate}}}\n\nThe same notion applies to: DBALL database files with {{{sdball=<db_size|estimate>}}} option.\nNote:\nINIT and ASSIGN statements in FileManagementSection are the old way to assign scratch and dball space.\nThe new way is through {{{sscr}}} {{{sdball}}} keyword values in MSCNastranCommand or in RunConfigurationFile file.
This feature is enabled by the MSCNastranCommand option {{{dmp=<n>}}}. If this option is not invoked, nastran runs serially, with same effect as a value of 0 for these keywords. A value of 1 triggers a request for DMP license and a different path within MSCNastran even though performance is not intended to be different.\nDMP (Distributed Memory Parallelism) was implemented with v70 in the late '90s, and has proven more popular than MSCNastranSharedMemoryParallelProcessing. The combination of both is allowed.\n{{{sdir=<sdir1[:sdir2:sdir3:...]>}}} allows the DMP processes to be assigned distinct FileSystems for scratch space, possibly spanning multiple hosts of a cluster with the {{{hosts=<host1[:host2:host3:...]>}}} syntax.\n[[MSCSoftwareStandardBenchmarks|http://www.mscsoftware.com/support/prod_support/nastran/performance/]] shows representative levels of performance achievable with DMP on various MSCNastranSolutionSequences and datasets.\n\nSOL108 is noteworthy for being embarassingly parallel and scaling almost linearly in MSCNastranDistributedMemoryParallelProcessing providing a separate IO channel exists for each processor.\nThe more primary SOL103 needs well balanced domains with small boundaries, so it may benefit from either GDMODES or MDMODES, and have a large frequency range, so it may benefit from FDMODES. Then, when you combining FDMODES with either GDMODES or MDMODES one gets good scaling up to a large number of processors.\nMSCNastranDistributedMemoryParallelProcessingTroubleShooting covers problems one might encounter.
A look at various errors which may appear on various platforms and the corrections based on the\nthe generic form of the MSCNastranCommand on a small SOL101 job:\n{{{\nmkcl05$ /apps/msc/v2005.5.1/bin/msc20055 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp\nMSC.Nastran V2005.5 (Hewlett Packard HP-UX B.11.23) Thu May 4 15:14:36 2006\nMSC.Nastran beginning job bcell2a.\nMSC.Nastran job bcell2a completed.\nmkcl05$\n}}}\nA check of this baseline execution can be performed using MSCNastranJobCheck\n\nA normal dmp=2 job on one host would show:\n{{{\nmkcl05$/apps/msc/v2005.5.1/bin/msc20055 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp dmp=2\nMSC.Nastran V2005.5 (Hewlett Packard HP-UX B.11.23) Thu May 4 15:21:53 2006\nDetermining available hosts, please wait...\nDMP task 1: host="mkcl05.rsn.hp.com" sdir="/tmp"\nDMP task 2: host="mkcl05.rsn.hp.com" sdir="/tmp"\nMSC.Nastran beginning distributed job bcell2a.\nMSC.Nastran V2005.5 (Hewlett Packard HP-UX B.11.23) Thu May 4 15:21:54 2006\nMSC.Nastran V2005.5 (Hewlett Packard HP-UX B.11.23) Thu May 4 15:21:54 2006\nMSC.Nastran beginning child job bcell2a.t1 on mkcl05.rsn.hp.com.\nMSC.Nastran beginning child job bcell2a.t0 on mkcl05.rsn.hp.com (master).\nMSC.Nastran job bcell2a completed.\nmkcl05$\n}}}\nA normal dmp=2 job on two hosts would show:\n{{{\nmkcl05$/apps/msc/v2005.5.1/bin/msc20055 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp dmp=2 hosts=mkcl05:mkcl08\nMSC.Nastran V2005.5 (Hewlett Packard HP-UX B.11.23) Thu May 4 15:23:16 2006\nDetermining available hosts, please wait...\nDMP task 1: host="mkcl05.rsn.hp.com" sdir="/tmp"\nDMP task 2: host="mkcl08.rsn.hp.com" sdir="/tmp"\nMSC.Nastran beginning distributed job bcell2a.\nMSC.Nastran V2005.5 (Hewlett Packard HP-UX B.11.23) Thu May 4 15:23:18 2006\nMSC.Nastran V2005.5 (Hewlett Packard HP-UX B.11.23) Thu May 4 15:23:18 2006\nMSC.Nastran beginning child job bcell2a.t1 on mkcl08.rsn.hp.com.\nMSC.Nastran beginning child job bcell2a.t0 on mkcl05.rsn.hp.com (master).\nMSC.Nastran job bcell2a completed.\nmkcl05$\n}}}\n{{{export MPIRUN_OPTIONS="-v"}}}\nshows verbose output from mpid daemon:\n{{{\nProcess layout for world 0 is as follows:\nmpirun: proc 9408\n daemon proc 9412 on host 15.99.241.154\n rank 0: proc 9438\n daemon proc 9753 on host 15.99.241.157\n rank 1: proc 9778\n}}}\n{{{export MPIRUN_OPTIONS="-prot"}}}\nshows protocol used (in [[log]]):\n{{{\nHost 0 -- ip 15.99.241.154 -- ranks 0\nHost 1 -- ip 15.99.241.157 -- ranks 1\n host | 0 1\n======|===========\n 0 : SHM TCP\n 1 : TCP SHM\n}}}\n{{{export MPIRUN_OPTIONS="-T"}}}\nshows process segregated timing (in [[log]]):\n{{{\nMPI Rank User (seconds) System (seconds)\n 0 0.71 0.90\n 1 0.65 1.07\n ---------------- ----------------\nTotal: 1.36 1.97\n}}}\n\nHP-UX Error messages:\n{{{\nmkcl05$/apps/msc/v2005.5.1/bin/msc20055 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp dmp=2 hosts=mkcl05:mkcl08\nMSC.Nastran V2005.1 (Hewlett Packard HP-UX B.11.23) Thu May 4 15:45:14 2006\nDetermining available hosts, please wait...\nDMP task 1: host="mkcl05.rsn.hp.com" sdir="/tmp"\n*** USER WARNING MESSAGE (pgm: nastran, fn: init_rmt_command)\n hosts=mkcl05:mkcl08 (command line[10])\n Unexpected failure of remote execution request.\n}}}\nMeans remsh access by nastran driver to remote is denied.\nCheck remsh access to remote machine mkcl08:\n{{{\nmkcl05$remsh mkcl08 uname -a\nremshd: Login incorrect.\nmkcl05$\n}}}\nand add mkcl05 entry in {{{.rhosts|/etc/hosts}}} for example.\n{{{\nmkcl05$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp dmp=2 hosts=mkcl05:halfdome\nMSC.Nastran V2005.1 (Hewlett Packard HP-UX B.11.23) Thu May 4 15:51:29 2006\nDetermining available hosts, please wait...\nDMP task 1: host="mkcl05.rsn.hp.com" sdir="/tmp"\n*** USER WARNING MESSAGE (pgm: nastran, fn: validate_dmp_hosts)\n halfdome.rsn.hp.com: No response from MSC.Nastran remote query: nastran\n -d0 -rN2005.1 frs=/mcae/s/msc/nastran/data/bcell2a.bdf drwx=/tmp\n fw=/mcae/s/msc/nastran/data/bcell2a.T9961_29 drwx=/mcae/s/msc/nastran/data\n}}}\nmay mean an access denial from a job queueing system like LSF.\n{{{\nmkcl05$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp dmp=2 hosts=>\nMSC.Nastran V2005.1 (Hewlett Packard HP-UX B.11.23) Sat May 6 18:36:27 2006\nDetermining available hosts, please wait...\nDMP task 1: host="mkcl05.rsn.hp.com" sdir="/tmp"\n*** USER WARNING MESSAGE (pgm: nastran, fn: validate_dmp_hosts)\n mkcl08.rsn.hp.com: No response from MSC.Nastran remote query:\n /nastran/msc/bin/nast20051 -d0 -rN2005.1\n frs=/mcae/s/msc/nastran/data/bcell2a.bdf drwx=/tmp\n fw=/mcae/s/msc/nastran/data/bcell2a.T17268_27 drwx=/mcae/s/msc/nastran/data\n}}}\nThe remote execution command is wrong in:\n{{{\nmkcl05$cat /apps/msc/v2005.1/msc20051/hpuxia64/nastran.ini\napplication=nastran\nversion=2005.1\nrcmd=/nastran/msc/bin/nast20051\n}}}\nThe third line can be deleted.\n\n{{{linux64}}}, {{{Linux8664}}} and {{{Linux}}} error messages:\n{{{\nopteron1$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp dmp=2 hosts=opteron1:opteron2\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:15:15 2006\nDetermining available hosts, please wait...\nDMP task 1: host="opteron1.rsn.hp.com(LAMn0 )" sdir="/tmp"\n*** USER WARNING MESSAGE (pgm: nastran, fn: init_rmt_command)\n hosts=opteron1:opteron2 (command line[10])\n Unexpected failure of remote execution request.\n}}}\nMeans rsh access by nastran driver to remote opteron2 host is denied.\nCheck rsh access to remote host opteron2:\n{{{\nopteron1$rsh opteron2 uname -a\nPermission denied.\n}}}\nand add opteron1 entry in {{{.rhosts|/etc/hosts}}} for example.\n\nCases where {{{rsh}}} is disabled, check {{{ssh}}} access:\n{{{\nopteron1$ssh opteron2 uname -a\noliviers@opteron2's password:\n}}}\nand setup access (HowTossh)\n{{{\nopteron1$ssh opteron2 uname -a\nLinux opteron2 2.6.9-5.0.3.ELsmp #1 SMP Mon Feb 14 10:00:21 EST 2005 x86_64 x86_64 x86_64 GNU/Linux\nopteron1$\nopteron1$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp dmp=2 hosts=opteron1:opteron2\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:23:12 2006\nDetermining available hosts, please wait...\nDMP task 1: host="opteron1.rsn.hp.com(LAMn0 )" sdir="/tmp"\n*** USER WARNING MESSAGE (pgm: nastran, fn: init_rmt_command)\n hosts=opteron1:opteron2 (command line[10])\n Unexpected failure of remote execution request.\n}}}\nmeans nastran drivers by default is trying to us rsh to validate remote hosts.\nadding {{{s.rsh=ssh}}} command line option:\n{{{\nopteron1$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp dmp=2 hosts=opteron1:opteron2 s.rsh=ssh\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:27:01 2006\nDetermining available hosts, please wait...\nDMP task 1: host="opteron1.rsn.hp.com(LAMn0 )" sdir="/tmp"\nThe authenticity of host 'opteron2.rsn.hp.com (15.99.241.48)' can't be established.\nRSA key fingerprint is 32:51:2a:e1:db:0f:bb:de:46:2d:c8:c2:5e:6a:79:bd.\nAre you sure you want to continue connecting (yes/no)? yes\nDMP task 2: host="opteron2.rsn.hp.com(LAMn1 )" sdir="/tmp"\nMSC.Nastran beginning distributed job bcell2a.\nLAM 6.5.9/MPI 2 C++ - Indiana University\n}}}\nmeans that LAM-MPI instead of HP-MPI is getting used. Switch to HP-MPI using {{{hpmpi=yes}}}\n{{{\nopteron1$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp dmp=2 hosts=opteron1:opteron2 s.rsh=ssh\nhpmpi=yes\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:28:47 2006\nDetermining available hosts, please wait...\nDMP task 1: host="opteron1.rsn.hp.com(LAMn0 )" sdir="/tmp"\nDMP task 2: host="opteron2.rsn.hp.com(LAMn1 )" sdir="/tmp"\nMSC.Nastran beginning distributed job bcell2a.\n/mcae/s/msc/nastran/data/bcell2a.T4030_47[270]: /apps/msc/v2005.1/msc20051/linux8664/hpmpi/bin/mpirun: not found\n}}}\nmeans HP-MPI path needs to be set preferably to an installation version greater than 2.2:\n{{{\n/opt/hpmpi/bin/mpirun -version\nexport MPI_ROOT=/opt/hpmpi\nopteron1$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw sdi=/tmp dmp=2 hosts=opteron1:opteron2 s.rsh=ssh\nhpmpi=yes\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:30:43 2006\nDetermining available hosts, please wait...\nDMP task 1: host="opteron1.rsn.hp.com(LAMn0 )" sdir="/tmp"\nDMP task 2: host="opteron2.rsn.hp.com(LAMn1 )" sdir="/tmp"\nMSC.Nastran beginning distributed job bcell2a.\nParsing application description...\nIdentifying hosts...\nSpawning processes...\nPermission denied.\nmpirun: Warning one more more remote shell commands exited with non-zero status, which may indicate a remote access problem.\n}}}\nmeans HP-MPI also needs to be set for rsh or ssh usage (rsh is default):\n{{{\nopteron1$export MPI_REMSH=/usr/bin/ssh\n}}}\n\n{{{\nopteron1$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw dmp=2 hosts=opteron1:opteron2 s.rsh=ssh\nhpmpi=yes sdi=/lvol_1_2ata\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:34:50 2006\nDetermining available hosts, please wait...\nDMP task 1: host="opteron1.rsn.hp.com(LAMn0 )" sdir="/lvol_1_2ata"\n\n*** USER WARNING MESSAGE (pgm: nastran, fn: validate_dmp_hosts)\n sdirectory=/lvol_1_2ata (command line[12])\n\n /lvol_1_2ata is invalid on opteron2.rsn.hp.com(LAMn1 ).\nDMP task 2: host="opteron1.rsn.hp.com(LAMn0 )" sdir="/lvol_1_2ata"\nMSC.Nastran beginning distributed job bcell2a.\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:34:51 2006\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:34:51 2006\nMSC.Nastran beginning child job bcell2a.t1 on opteron1.rsn.hp.com.\nMSC.Nastran beginning child job bcell2a.t0 on opteron1.rsn.hp.com (master).\nMSC.Nastran job bcell2a completed.\nopteron1$\n}}}\ncorrected by specifying multiple paths for scratch file system:\n{{{\nopteron1$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw dmp=2 hosts=opteron1:opteron2 s.rsh=ssh\nhpmpi=yes sdi=/lvol_1_2ata:/lvol_1_2ide\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:43:47 2006\nDetermining available hosts, please wait...\nDMP task 1: host="opteron1.rsn.hp.com(LAMn0 )" sdir="/lvol_1_2ata"\nDMP task 2: host="opteron2.rsn.hp.com(LAMn1 )" sdir="/lvol_1_2ide"\nMSC.Nastran beginning distributed job bcell2a.\nParsing application description...\nIdentifying hosts...\nSpawning processes...\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:47:04 2006\nMSC.Nastran beginning child job bcell2a.t0 on opteron1.rsn.hp.com (master).\nMSC.Nastran V2005.1 (AMD Linux 2.6.9-5.0.3.ELsmp) Thu May 4 16:47:04 2006\nMSC.Nastran beginning child job bcell2a.t1 on opteron2.rsn.hp.com.\nProcess layout for world 0 is as follows:\nmpirun: proc 6295\n daemon proc 6301 on host 15.99.241.47\n rank 0: proc 6347\n daemon proc 19110 on host 15.99.241.48\n rank 1: proc 19146\nMPI Application rank 1 exited before MPI_Finalize() with status 0\n}}}\nmay mean the architecture does not get set properly in child remote processes:\n{{{\nopteron1$grep Executable: bcell2a.log\nExecutable: /apps/msc/v2005.1/msc20051/linux8664/analysis.dmp.hp\nExecutable: /apps/msc/v2005.1/msc20051/linux/analysis.dmp.hp\nopteron1$\n}}}\nthis a nastran driver problem fixed with v2005.5\nIn v2005.1, override the architecture selection on the remote host by adding {{{-e MSC_ARCH=$MSC_ARCH}}} to {{{bin/nast20051.dmp}}}:\n{{{%MSC_ARCH=linux:% print -u3 -- "-h ${hosts[$i]} -e MSC_ARCH=$MSC_ARCH -e LAM=no -e MPI_ROOT=$MPI_ROOT -e MPI_WORKDIR=$PWD -e MPI_2BCOPY=1 -np 1\n%${rcmds[$i]} -c$i -d%r.debug% jid=$jid $args hpmpi=yes"}}}\n{{{\nopteron1$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw dmp=2 hosts=opteron1:opteron2 s.rsh=ssh\nhpmpi=yes sdi=/lvol_1_2ata:/lvol_1_2ide\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:50:26 2006\nDetermining available hosts, please wait...\nDMP task 1: host="opteron1.rsn.hp.com(LAMn0 )" sdir="/lvol_1_2ata"\nDMP task 2: host="opteron2.rsn.hp.com(LAMn1 )" sdir="/lvol_1_2ide"\nMSC.Nastran beginning distributed job bcell2a.\nParsing application description...\nIdentifying hosts...\nSpawning processes...\nWarning: No xauth data; using fake authentication data for X11 forwarding.\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Thu May 4 16:50:28 2006\nMSC.Nastran beginning child job bcell2a.t0 on opteron1.rsn.hp.com (master).\nMSC.Nastran V2005.1 (AMD Linux 2.6.9-5.0.3.ELsmp) Thu May 4 16:50:28 2006\nMSC.Nastran beginning child job bcell2a.t1 on opteron2.rsn.hp.com.\nProcess layout for world 0 is as follows:\nmpirun: proc 6921\n daemon proc 6927 on host 15.99.241.47\n rank 0: proc 6973\n daemon proc 19321 on host 15.99.241.48\n rank 1: proc 19356\nMSC.Nastran job bcell2a completed.\nopteron1$\n}}}\nnow the architecture does get set properly in child remote processes:\n{{{\nopteron1$grep Executable: bcell2a.log\nExecutable: /apps/msc/v2005.1/msc20051/linux8664/analysis.dmp.hp\nExecutable: /apps/msc/v2005.1/msc20051/linux8664/analysis.dmp.hp\n}}}\n\n{{{\nopteron1$/apps/msc/v2005.1/bin/msc20051 nastran bcell2a bat=no scr=yes not=yes old=no app=no mem=32mw dmp=2 hosts=opteron1:opteron2 s.rsh=ssh hpmpi=yes sdi=/tmp\nMSC.Nastran V2005.1 (AMD Linux 2.4.21-27.ELsmp) Sat May 6 18:54:11 2006\nDetermining available hosts, please wait...\nDMP task 1: host="opteron1.rsn.hp.com(LAMn0 )" sdir="/tmp"\n*** USER WARNING MESSAGE (pgm: nastran, fn: validate_dmp_hosts)\n opteron2.rsn.hp.com(LAMn1 ): Unable to make MSC.Nastran remote query:\n /nastran/msc/bin/nast20051 -d0 -rN2005.1\n frs=/mcae/s/msc/nastran/data/bcell2a.bdf drwx=/tmp\n fw=/mcae/s/msc/nastran/data/bcell2a.T13165_11 drwx=/mcae/s/msc/nastran/data\n*** USER WARNING MESSAGE (pgm: nastran, fn: validate_dmp_hosts)\n opteron2.rsn.hp.com(LAMn1 ): No response from MSC.Nastran remote query:\n /nastran/msc/bin/nast20051 -d0 -rN2005.1\n frs=/mcae/s/msc/nastran/data/bcell2a.bdf drwx=/tmp\n fw=/mcae/s/msc/nastran/data/bcell2a.T13165_11 drwx=/mcae/s/msc/nastran/data\n}}}\nThe remote execution command is wrong in:\n{{{\nopteron1$cat /apps/msc/v2005.1/msc20051/linux8664/nastran.ini\napplication=nastran\nversion=2005.1\nrcmd=/nastran/msc/bin/nast20051\nopteron1$\n}}}\nThe third line can be deleted.
Installation and Operations Guide (COG)\nRelease Guide\nQuick Reference Guide (QRG)\nNumerical Guide
Correctness:\nA successful run results in at least three files generated:\n{{{<mydataset>}}}.[[f06]] Engineering Data results. (Should show {{{END OF JOB}}})\n{{{<mydataset>}}}.[[f04]] Computational Processes trace. (Should show {{{EXIT BEGN}}})\n{{{<mydataset>}}}.[[log]] MSCNastran Command system trace. (Should show {{{NSEXIT: EXIT(0)}}} and {{{Analysis complete 0}}})\nIf not look for {{{USER FATAL}}} or {{{SYSTEM FATAL}}} in [[f06]] file.\nPerformance:\nThe tail of [[log]] depending on the [[Platforms]] shows:\n{{{\nreal 53:44.7\nuser 15:38.9\nsys 3:23.8\n}}}\nor\n{{{\n3013.11user 104.87system 1:13:08elapsed 71%CPU (0avgtext+0avgdata 0maxresident)k\n}}}\nA difference between {{{real|elapsed}}} and {{{user+sys}}} times is accounted for by CPU waits.\nInsufficent memory may have been allocated for the job.\nThe {{{HIWATER}}} line in [[f04]] reached due to MSCNastranResourceRequirements:\n{{{\n *** TOTAL MEMORY AND DISK USAGE STATISTICS ***\n +---------- SPARSE SOLUTION MODULES -----------+\n HIWATER SUB_DMAP DMAP\n (WORDS) DAY_TIME NAME MODULE\n 524287996 05:11:27 XREAD 34 READ\n}}}\ncan be compared with the {{{MEM=}}} value echoe'd in [[Words]] in [[log]] file to see whether this is the case.\n{{{\nMEM=524288000\n}}}\nThe {{{MEM=}}} value might be lower than the {{{mem=}}} value entered on the command line because of MSCNastranResourceLimits.\nIf this is not the case, the job may not be making sufficient use of MSCNastranBufferedIO or of the OperatingSystem BufferCache or IOTuning maybe lacking.\nThe job may have been incurring [[Swap]]ping due to competing jobs or insufficient [[RAM]] for the amount requested.\nThe [[f04]] can be scanned to look for the module where the divergence between {{{Elapsed}}} and {{{CPU_Sec}}} time is occurring.\nUIM4157 is where NUMBER OF NONZEROES, MINIMUM MEMORY REQUIREMENT, MEMORY REQR'D TO AVOID SPILL, ESTIMATED MAXIMUM FRONT SIZE can be found and UIM6439 is where SPARSE DECOMP MEMORY USED and SPARSE DECOMP SUGGESTED MEMORY are.\nExecution can be stopped after UIM4157 by setting solve=sys69=64\n\nFor MSCNastranSolutionSequences SOL103, look for:\n{{{\n*** USER INFORMATION MESSAGE 5403 (LNNRIGL)\n BREAKDOWN OF CPU TIME (SEC) DURING LANCZOS ITERATIONS:\n OPERATION REPETITIONS AVERAGE TOTAL\n FBS (BLOCK SIZE= 7) 447 3.35 1499.34\n MATRIX-VECTOR MULTIPLY 4258 0.07 294.05\n SHIFT AND FACTOR 15 59.52 892.77\n LANCZOS RUN 15 209.61 3144.12\n}}}\n\n\n
For EM64T, check the logfile to see that BLAS/LAPACK shared object "libsse3.so" has been loaded. Remedy with BLASLIB environment variable.\nFor Itanium2 HP-UX, check linkage with a recent version of MLIB in {{{/opt/mlib}}}\nFor all platforms, check HP-MPI
Input as NastranSystemCells or their keyword equivalents in MSCNastranCommand or RunConfigurationFile:\n* fbsmem=sys146=integer Default=1\nReserves (n x [[Buffsize]] x 3) memory for faster solution in the Lanczos method of eigenvalue extraction. A value of 2 increases the memory reserved by 200%, a value of 3 increases the memory reserved by 300%, etc. \nIf FBS is slow, setting sys229=1 and sys146=4 may help. The default is to cut up memory evenly between the FRONT and the Right Hand Side. fbsmem>1 give more memory to the FRONT to fit it in core. Since the right hand side is so big, it will not fit in core anyway.\nOn Normal Modes runs, set sys146 such that: (FRONT^2)/2 < sys146*3*[[Buffsize]]\nLook for `ESTIMATED MAXIMUM FRONT SIZE' in [[f04]]'s UIM4157.\n* disksave=sys193=(0 for save or 1 for nosave) (Default=0) \nLanczos High Performance Option: the matrix/vector multiply is saved in a scratch file (0) or recomputed at every iteration (1).\nIn case IO's are slowing down the job, setting this to 1 might improve performance.\n* fastio=sys194=(0 or 1) (Default=0) \nLanczos High Performance Option, controls input/output in orthogonalization/normalization routines:\n0: UNPACK/PACK (Default)\n1: GINO READ/WRITE\n* scrsave=sys196=(0 or 1) (Default=0)\nLanczos High Performance Option: Controls recomputation (0=Default) or reuse (1) of scratch files in segment logic.\nUseful only when multiple frequency segments are requested on a Lanczos run. (Multiple frequency segments can be requested via the NUMS field in the EIGRL entry and by numseg=sys197.) Each frequency segment requires a minimum of three scratch files. When multiple frequency segments are used on a single processor computer then each frequency segment is solved serially. In this case, segment #2 can use the scratch files which were used by segment #1 since work for segment #1 has just been completed. Similarly, when work for segment #2 is finished, segment #3 can to use #2's scratch files. SYSTEM(196)=1 allows such file reuse and is considered safe on Version 70 and later systems.\n* massbuf=sys199=integer (Default=1)\nLanczos High Performance Option: 2 times this number of buffers will be to set aside for storing the mass matrix in core.\nOn Normal Modes SOL103 runs, set sys199 such that: MASS_MATRIX < 2*sys199*[[Buffsize]]\nThe Mass matrix will be MFF in [[f04]] diag8 output with number of terms computed as Cols x Rows x Density and each term is stored as two [[Words]] such that sys199>Cols x Rows x Density/[[Buffsize]]\n* dcmpseq=sys206=integer\nOrdering method for sparse matrix decomposition.\n0: Method selected automatically in symbolic factoring phase.\n1: Minimum degree ordering. (HP-UX 11.0 v70r4 default)\n2: Modified minimum degree ordering for indefinite matrices.\n3: No ordering (uses given sequence).\n4: Extreme ordering. (HP-UX 11.0 v70.5 AND LATER default)\n8: METIS ordering.\n9: Selects better of METIS and MMD.\n* memsave=sys229=(0 or 1) (Default=0)\nSpecifies space-saving method for the old Lanczos method of eigenvalue extraction \n0: No space savings. (Default)\n1: Do not write factors to disk which reduces scratch space usage 67%.\n* maxset=sys263=integer (Default=7) (maximum=15)\nControls the default number of vectors in block or set for Lanczos Eigenvalue extraction. Increasing MAXSET may improve performance for large problems where a large number of eigenvalues are being sought. (setting on the EIGRL entry always takes precedence.)\n* sys273=(0 or 1) (Default=0) \nValue of 1 selects Lanczos shift logic from V70 and before.
`Current resource limits' given in the log file can also be obtained by running the limits utility:\n{{{\n$<install_dir>/bin/msc<version> nastran limits\nCurrent resource limits:\n CPU time: unlimited\n Virtual address space: unlimited\n Working set size: unlimited\n Data segment size: 268435456 KB (hard limit: 268435456 KB)\n Stack size: 1048576 KB (hard limit: 1048576 KB)\n Number of open files: 2048 (hard limit: 2048)\n File size: unlimited\n Core dump file size: 2047 MB\n$\n}}}\n\nMemory allocation limits throughout successive MSCNastranVersions have been a consequence of operating system addressing capability and of the `dynamic common' memory storage technique where data is addressed by indexing this common block array of integer [[Words]].\n\nHP-UX 10.20 and HP-UX 11.00 version 70 and current IA32 MSCNastran ports have a memory allocation limit of 1 and 2GB, respectively due to Operating System 32 bit addressing limitation (ILP32 port). This limit is reached with 4 million DOF's for the simplest analysis (Statics-sol 101), beyond which, MSCNastran will run necessarily partially OutOfCore.\n\nBuilding MSCNastran in 64 bit mode (LP64 port), has allowed addressing up to \n4 bytes per word *2**31, i.e. 8GB in\nHP-UX 11.0 versions 2001 and above and\nHP-UX 11.2x versions 70.7, 2001 and above.\n\nIn, 2001.0.9 for example with\nMemory = 49145 MB (47.993164 GB) \nand\nData segment size: 268435456 KB (hard limit: 268435456 KB)\none gets:\ncommand line value --> MEM=value printed in log file.\nmem=7800MB -->MEM=2044723200\nmem=7900MB -->MEM=2070937600\nmem=8000MB -->MEM=2097152000\nmem=8100MB -->MEM=2123366400\nmem=8150MB -->MEM=2136473600\nmem=8192MB -->MEM=2147482624 =8GB\nmem=8200MB -->MEM=2147482624\nmem=8400MB -->MEM=2147482624 \nWith the transition to 8 bytes-words with 8 bytes-integers builds, (ILP64 port) real memory \nallocation greater than 8GB is possible, however, some binary input/output files compatibility is broken. \n\nMemory allocation is constrained by the smaller of :\n*the ports memory limit, (1.9GB for v70 and 8GB for v2001)\n*the host/system/node limit which is output further down the log file like this for example:\n{{{ Data segment size: 268435456 KB (hard limit: 268435456 KB)}}}\nIt sometimes occurs that this last value is lower than the Physical memory of the system. \nThis could result from:\n*Data segment size might have been lowered within MSCNastran's current shell by a `limit' built-in invocation.\nTo check whether this is the case, `exec' the expected running shell command\nand execute the appropriate `limit' command:\nsh-posix, ksh: {{{$ ulimit -a}}}\ncsh, tcsh: {{{% limit}}}\nIf printout is lower than actual memory available, after finding from\nwhat shell this limit was lowered, it can be raised again with root priviledge.\nsh-posix: {{{$ ulimit -d unlimited}}}\nAny cmd limiting the "datasize" should be removed, even if it sets datasize \nto "unlimited" because the shell may be a 32 bit program (as shown by invoking {{{file}}} command\nand therefore "unlimited" might still limit the data segment size to 2*31=2147483648 32 bit limited value.\nMSCNastran's `limits' utility uses getrlimit which is a 64 bit function for recently compiled nastran drivers.\nSo these numbers are always correct and unlimited means 2**63(?)\n*The cron command may have an innapropriate ulimit invocation.\n(patches phco_31198, phco_27141 for 11.11, 11.00)\n\n*Running kernel may have inadequate `maxdsiz_64bit' (HP-UX) value.\n{{{\nstrings /stand/vmunix | grep maxdsiz_64bit\ngrep maxdsiz_64bit /stand/system\n}}}\nInstalling TCOE would correct the situation and alternatively KernelParametersAdjustment can be performed for KernelTuning.
For most models of moderate size (up to 5000 grid points for static analysis), the default MSCNastran parameters allocate sufficient resources. \nFor larger models and StaticAnalysis (Other MSCNastranSolutionSequences will generally have greater requirements.) estimated memory requirements of StaticAnalysis in terms of DegreesOfFreedom are:\n{{{\n DOF < 10000 2MW\n 10000 < DOF < 50000 5MW\n 50000 < DOF < 100000 10MW\n100000 < DOF < 200000 22MW\n}}}\nand estimated total disk requirements and StaticAnalysis in terms of DegreesOfFreedom:\n{{{\n DOF < 10000 90MB\n 10000 < DOF < 50000 500MB\n 50000 < DOF < 100000 1000MB\n100000 < DOF < 200000 2000MB\n}}}\n\nAlternatively, MSCNastranResourceRequirements can be evaluated by using the {{{estimate}}} utility:\n{{{\n<install_dir>/bin/msc<version> estimate <model_name>\n}}}\n\nMSCNastran uses integrated InCore & OutOfCore computational methods so the size of the solution is not limited by the amount of memory one can access but performance is definitely affected by how much InCore computations can be kept.\nHi Water Mark values of memory usage reached during the run appear at the bottom of the [[f04]] file three lines below {{{TOTAL MEMORY AND DISK USAGE STATISTICS}}} under {{{HIWATER}}}\nIf the job is given enough real memory to run the job without spill, then performance will be maximized. \nIf not, one should not set memory allocation above physical memory available during the run because OutOfCore computation handling by MSCNastran is always better than paging virtual memory in the OperatingSystem.\nOne should start with the memory suggested by the {{{estimate}}} utility, double it, and then possibly run several iterations to find a better memory setting. Indeed, memory should not be allocated too high because is desirable to take advantage of BufferCache.\n\nMemory allocation is specified with the\n{{{memory=<MemorySize}}} option where \nMemorySize is a positive non-zero value specified with the:\n{{{nB, nW, nKB, nKW, nK, nMB, nMW, nM, nGB, nGW, nG}}} unit qualifiers or\n{{{memory=estimate}}} which results in automatic invocation of the {{{estimate}}} utility.\nMemory allocation is echoed back in the [[log]] file as the equivalent number of [[Words]] of \nOpenCore after capping by MSCNastranResourceLimits.\n
RESTART capability within the NASTRAN environment can be set up through DMAP (scripting but compiled source driving standard and customized solution sequences.)
This feature is enabled by the MSCNastranCommand option {{{smp|parallel|sys107=<n>}}}. If this option is not invoked, nastran runs serially, with same effect as a value of 0 for these keywords. A value of 1 triggers a request for SMP license and a different path within MSCNastran even though performance is not intended to be different.\nParallel speedup (or slowdown) varies depending on the MSCNastranSolutionSequences or data set. Memory also affects how matrix operations are blocked for efficency. When running a Lanczos solution (sol 103) parallel sparse fbs is always blocked at the MAXSET value of 1-15 which is too small. It is best to turn off this parallel module with the bitmask on the parallel setting: {{{parallel=(524288+n)}}}, where {{{n}}} is the number of parallel threads intended for all other parallel modules. \nSo for example, to use 4 cpus, but turn off parallel sparse fbs, use parallel=524292. SMP implementation varies across [[Platforms]] and operating systems: SPP-UX port was using kernel cps threads. The HP-UX 10.20 port then used SYSV shared memory fork/join processes. HP-UX 11.0 and above port use kernel posix threads. \nThe end of [[f04]] accounts by modules the times of the different threads and allows deselection through the mask mechanism of SMP-inefficient modules.\nMSCNastranSharedMemoryParallelProcessing was introduced with v67 in the mid '80s and has seen less usage since MSCNastranDistributedMemoryParallelProcessing was introduced with v70 in the late '90s.\n
SOL103 NormalModes, RealEigenvalues - most datasets (SCRATCH300) (dmp available)\nSOL111 ModalFrequencyResponse – second most (SCRATCH300) (dmp available)\nSOL101 LinearStatics (SCRATCH) (dmp available)\nSOL108 DirectFrequencyResponse (dmp available)\nSOL200 DesignOptimization\nSOL106 NonlinearStatics\nSOL107 DirectComplexEigenvalues\nSOL109 DirectTransientResponse\nSOL110 Modal ComplexEigenvalues\nSOL112 ModalTransientResponse (dmp available)\nSOL400 Nastran and non-linear elements\nSOL600 Nastran spawning MSCMarc\nSOL700 Nastran spawing LS-DYNA\n
* Since MSCNastran v705 an iterative solver with reduced IO requirements for solutions 101,106,108 and 111 can be used instead of the direct sparse solver with command line option {{{sys216|iter=yes}}} or ITER Nastran card.\n* MSC/Nastran v705 has a new eigenvalue method ACMS, for solutions 103,106,108 and 111 which greatly reduce the amount of IO a frequency job needs.\n* Description of the Lanczos logic:\nBoeing Lanczos shift logic is a heuristic based strategy. \nThe basic loop is:\n{{{\n[calculate initial shift]\nDO UNTIL (done OR something breaks)\n [factor at new shift point]\n [make lanczos run]\n [calculate new shift]\nDONE\n}}}\nwhere [make lanczos run] consists of several discrete steps. During each step, more eigenvalues are calculated, further and further away from the shift point, and their corresponding eigenvectors are orthogonalized to previously existing eigenvectors. At the end of each step (called a "block step") the algorithm evaluates its progress in an attempt to answer the questions:\n- am I done?\n- shall I continue, or shall I move on to a new shift point?\nThe latter question is answered by examining how long it is taking to get eigenvalues. So the CPU time for each step is kept and a "cost per eigenvalue" is evaluated, and a curve is fit through the progressive values during the Lanczos run. When the extrapolated cost is projected to exceed some threshold, the Lanczos run is terminated, a new shift is calculated,and the DO UNTIL loop executes once more. When FBS is fast on a given machine, more shifts are performed and this might overall slow the whole Lanczos module time. The way to mitigate this isto increase the Lanczos block size (MAXSET on EIGRL). Typically set to 15. This way, the algorithm tends to remain at a shift point longer and less shifts are done as a result.\n\n
MSCNastran uses timing constants to determine fastest algorithms or methods to perform some of its numerically intensive operations. \nTiming constants are encoded by MSCSoftware for all architectures MSCNastran has been ported to in the delivery database files:\n{{{<install_dir>/msc<version>/<arch>/SSS.*}}}\nwhere <version> is one of the MSCNastranVersions and\n<arch> is one of:\n{{{hpux}}} (PA-RISC processors running HP-UX 11.00, 11.11) \n{{{hpuxia64}}} (Itanium 1 or Itanium 2 processors running HP-UX 11.2x)\n{{{linux64}}} (Itanium 1 or Itanium 2 processors running [[Linux]] 64 bits)\n{{{linux8664}}} (AMD64 or EM64T processors running [[Linux]] 64 bits)\n{{{linux}}} (x86 processors running [[Linux]] 32 bits)\n(For HP computer systems).\n\nFor each architecture, these timing constants are grouped by timing blocks indexed by the {{{config}}} number selected by the NastranDriver at startup time.\nThe index mapping for HP-UX is:\n{{{800}}} for all hpux CPU's.relative to specific CPU models \n{{{2000 + <clock> (MHz)}}} for hpuxia64 itanium 1 (=2733 as only 733MHz Itanium 1 models exist)\n{{{4000 + <clock> (MHz)}}} for hpuxia64 itanium 2 (clock rates of 900, 1000, 1300, 1400, 1500 and 1600MHz exist at the time of this writing).\nVersion 707.x have been delivered with only 800 config timing block.\nVersions 2001.0.x and 2004.0.0 have been delivered with 800 and 2733 config timing blocks.\nVersions 2004.0.x (x>6) have been delivered with 800, 2733, 4900, 5000, 5300, 5400 and 5500\nVersion 2005.0.0 has been delivered with 800, 2733, 4900, 5000, 5300, 5400 and 5500\nVersion 2005.1 has been delivered with 800, 2733, 4900, 5000, 5300, 5400, 5500 and 5600\nconfig timing blocks.\nTo use an installed timing block, the NastranDriver can be overridden by setting\n{{{config=<config>}}} or {{{sys28=<config>}}} option on the command line, RunConfigurationFile or input file \n{{{NASTRAN SYSTEM (28)=<config>}}} statement.\n\nLetting the NastranDriver determine the config number may result in missing installed timing blocks and MSCNastran will display the following warning message for example:\n{{{\n*** USER WARNING MESSAGE 6080 (TMALOC)\nTHE TIMING CONSTANTS DATA BLOCK TIMEBLK NOT FOUND ON THE DELIVERY DATABASE FOR:\nMACHINE = 9 CONFIG = 5500 OPERASYS = 3 OPERALEV = 7 SUBMODEL = 1\nLOADING DEFAULT TIMING CONSTANTS DATA BLOCK FOR:\nMACHINE = 5 CONFIG = 56 OPERASYS = 3 OPERALEV = 5 SUBMODEL = 1\nMODULE TIMING ESTIMATES INACCURATE AND MAY CAUSE INEFFICIENT JOB EXECUTION\n}}}\nThis may result in excessive runtimes.\n\nTo add proper timing constants for a specific CPU to the delivery database, the following steps can be followed:\nCopy the relevant Structured Solution Sequence files to be modified by the gentim2 run:\n{{{\ncp <install_dir>/msc<version>/<arch>/SSS.MASTERA gentim2.MASTERA\ncp <install_dir>/msc<version>/<arch>/SSS.MSCSOU gentim2.MSCSOU\ncp <install_dir>/msc<version>/<arch>/SSS.MSCOBJ gentim2.MSCOBJ\n}}}\nRun the {{{gentim2.dat}}} job to measure the timing constants of the computer and store them in its local scratch database.\n{{{\n<install_dir>/bin/msc<version> nastran gentim2 scratch=no\n}}}\nThe larger the value of BulkData parameter {{{PARAM}}}, the longer the {{{gentim2.dat}}} job runs and the more accurate the timing results. \nThe default value of 7 keeps elapsed time below one hour .\n\nIf there are no errors, replace the old DBsets with the new DBsets created by the {{{gentim2.dat}}} run as they now contain updated timing blocks relative to the {{{config}}} detected by the NastranDriver:\n{{{\nmv gentim2.MASTERA <install_dir>/msc<version>/<arch>/SSS.MASTERA\nmv gentim2.MSCOBJ <install_dir>/msc<version>/<arch>/SSS.MSCOBJ\nmv gentim2.MSCSOU <install_dir>/msc<version>/<arch>/SSS.MSCSOU\n}}}
This tuning guide is specific to MSCNastran whereas the main document in [[Introduction]] addresses issues common to all CAEApplications.\nInformation is compiled from MSCSoftware MSCNastranDocumentationLibrary.\n\nOnce HardwareTuning, KernelTuning and IOTuning have been performed, MSCNastran has a substantial list of command options that affect performance.\nThere is no single set of default options on a given MSCNastranCommand that will garantee the best performance on all [[Platforms]], models and MSCNastranSolutionSequences. However, specific issues sometimes need to be addressed after a cursory MSCNastranJobCheck.\n\nMSCNastranTimingBlocks\nMSCNastranResourceRequirements\nMSCNastranResourceLimits\nMSCNastranBufferedIO\nMSCNastranPerformanceOptions\nMSCNastranSharedMemoryParallelProcessing\nMSCNastranDistributedMemoryParallelProcessing\nMSCNastranDistributedMemoryParallelProcessingTroubleShooting\nMSCNastranLibraries\nMSCNastranSolvers\nMSCNastranVersions\nMSCNastranRestartMechanisms\nMSCNastranCommonJobFailures\n
Most common versions are: 2001.0.9, 2004.0.6, 2004.5, 2005.0.0(r1), 2005.1(r2), 2005.5(r3)\nfrom MSCNastranVersionsHistory\n\nSome versions exhibit performance differences in some MSCNastranSolutionSequences cases:\n\nShortfall in performance occurs in V2004 and above for 111 and 112 MSCNastranSolutionSequences \ndue to the use of residual vectors where they are turned on by default for increased \naccuracy at the upper end of the user's given frequency range. \nThey are not turned on by default in SOL 103. \nThere are modes recovered for the structure, and residual \nvectors used for an increased total number of modes. The source of the \nresidual vectors are applied loads and also (possibly) damping. The increased \nsize of the modal space accounts for the difference in performance in FRRD1 and\ndata recovery in addition to the added expense of computing the residual \nvectors themselves.\nFor a consistent comparison, one can run V2004 without residual vectors \n(PARAM,RESVEC,NO and PARAM,RESVINER,NO) and/or rerun V2001 with \nresidual vectors turned on (PARAM,RESVEC,YES). Even then, there are \nstill significant differences in DMAP operations between the two versions.\n\n
MSC.NASTRAN release history on HP platforms:\n{{{\nVersion Date New OS/Architecture Supported Memory Limit\nv70.7 HP-UX 11.00 (32 bit) PA-RISC 2.0 2 GB\n\nv2001.0.1 04/2001 HP-UX 10.20 (32 bit) PA-RISC 2.0 1 GB\n HP-UX 11.00 (64 bit) PA-RISC 2.0 8 GB\n\nv2001.0.4 12/2001 HP-UX 11.00 (64 bit) PA-RISC 2.0 8 GB\n HP-UX 11.20 (64 bit) Itanium 1 8 GB\n TurboLinux 2.4.5-b02 Itanium 1 8 GB\n\nv2001.0.7 04/2002 \n\nv2001.0.9 11/2002 HP-UX 11.22 (64 bit) Itanium 2 8 GB\n Linux 2.2.5 (64 bit) Itanium 2 8 GB\n\nv70.7 01/2003 HP-UX 11.22 (64 bit) Itanium 2 8 GB\nv70.7 08/2003 Linux 2.2.5 (64 bit) Itanium 2 8 GB\n\nv2004.0.0 09/2003 \n \nv2004.0.6 02/2004 \n\nv2004.5.0 06/2004 \nv2005.0.0 (r1) 09/2004 \nv2005.1 (r2) 07/2005 \nv2005.5.0 (r3) 03/2006 \nv2006.0.0 (r1) 04/2006 \nv2005.5.1 (r3b) 05/2006 \n}}}
[[MSCSoftware|http://www.mscsoftware.com]] is the historical Nastran vendor.
MSCSuperForge is available from [[MSCSoftware|http://www.mscsoftware.com]] \nHP Strategic Alliance Manager for MSC.Software - Jeff Wall\nMSCSuperForge is a Windows-Only product and is based on Finite Volume.\nThe original solver of MSCSuperForge was based on teh MSCDytran engine.
MSCSuperForm is available from [[MSCSoftware|http://www.mscsoftware.com]] \nHP Strategic Alliance Manager for MSC.Software - Jeff Wall\nSuperForm is based on Finite Element technology and was based on MSCMarc product and it is supported on Windows/Linux and Unix platforms.
[[Introduction]]\nIntendedAudience\nHP-UX\nCAEApplications\n[[TableOfContents]]\n[[Document]]\n^^[[edit menu|MainMenu]]^^
Mechanica is available from [[PTC|http://www.ptc.com]]\nHP Strategic Alliance Manager for PTC - Jeff Wall
Between memory DIMMS and memory controller, or Core.\nShown by memcpy speed or measured (differently) by the [[STREAM|http://www.cs.virginia.edu/stream/]] benchmark, it affects CPU time.\nBandwidth between memory and Core may be limited by System Bus.\n\nExamples:\nHP rx4640 MemoryBandwidth between memory DIMMS and memory controller, 12.8GB/s.\nHP Itanium2 zx1 chipset Front Side Bus running double pumped 200MHz with a width of 128 bits (=16 Bytes) results in 6.4GB/s between Core and Memory.\nThe new zx2 has a much improved memory bandwidth and this is good for 4 concurrent jobs on a 2p/4c system like the rx3640 - as\nlong as IOBandwidth is there. But the rx6600 with 4p/8c and only one zx2 may not have enough for some applications limited by IOBandwidth or MemoryBandwidth.\nHP [[ccNUMA]] rx7620, rx8620, Superdome have 2 FSB's per cell, with a combined bandwidth of 10.4GB/s for sx1000 chipset and 13.6GB/s for sx2000 chipset.\n\nAMD Opteron systems are [[ccNUMA]] by design but have no System Bus between Memory and Processor.\nAs a result local MemoryBandwidth is maximized:\nDDR266 PC2100: 4.2 GB/s\nDDR333 PC2700: 5.3 GB/s\nDDR400 PC3200: 6.4 GB/s\nas well as local MemoryLatency but remote memory is accessed via adjacent Cores through proprietary HyperTransport.\n
CPU Register: 0 cycles\nL3 cache: 20 cycles\nRAM: 200 to 400 cycles depending on architecture (UMA or Cell-based ccNUMA)\nStorage Subsystem Cache: 100000 cycles\nNote: Much lower than Physical Disk: 5000000 cycles \nA cycle is 1ns on a 1GHz processors.\n\nExamples:\n120ns for rx2600.\n140ns for rx5670.\n250ns for rx[7,8]620, Superdome in-cell with sx1000, 200ns with sx2000\n280ns for rx7620 out-of-cell\n400ns for rx8620 out-of-cell\nTimes are relative to zx1/sx1000 chipset with 200MHz FSB\nzx2/sx2000 chipsets provide lower latency and are also available with 267MHz FSB\n\n100ns for AMD Opteron Memory Controller local\n115ns for AMD Opteron Memory Controller 1 hop through proprietary HyperTransport.\n150ns for AMD Opteron Memory Controller 2 hops through proprietary HyperTransport.
In a large memory system (> 2GB) with dynamic BufferCache, minfree, desfree and lotsfree need to be increased. These parameters are the threshold to the system determining how aggressively it needs to choose pages to swap out. By default the system looks to steal BufferCache pages before it will actually swap anything out. These parameters allow the system to free BufferCache more readily once memory pressure develops. This is especially the case when the applications are trying to allocate 64MB pages.\n\nThe vhand process uses the three parameters above to manage memory. vhand is the HP-UX swapper. It searches memory for pages to deallocate. When the amount of free memory drops below lotsfree vhand starts to work marking pages that can be de-allocated (or moved off to backing store) without actually modifying any pages by either moving their contents to swap space or simply releasing the page (if it contains process text pages or buffer cache pages that have already been written to disk). If free memory should drop below minfree vhand will move faster and de-allocate whole processes. When you have an application that may request a 64MB page of data space, we need to make sure that there is 64MB worth of free memory so that the request can succeed given there is enough memory available that we can steal from the BufferCache. By setting these values higher for technical servers, we give vhand enough leverage to make sure that buffer cache pages can be given up before they are requested by an application. This will only apply to machines that have been set up to run with dynamic BufferCache.\n\nOne last thing about vhand, by default it will look to steal a buffer cache page 3 times for every time it will look to swap out an active memory page. Therefore, by setting these values high, we are not risking the premature swapping that you would get in a machine with a smaller memory footprint.\n\nThere is one very serious caveat to these parameters. They cannot be set using sam. They must be set manually, and once they are set you cannot use sam to change parameters again. In HPUX 11.00 the sam program does not know about these three parameters and therefore will not include them when it builds a kernel. Users must be made aware of these parameters and warned about this problem. We are currently trying to get this behavior changed, however to date it remains.
iostat : reports I/O statistics for each active disk\nps : displays info. about selected processes\ntime : reports elapsed, user and system times\ntop : displays real-time top processes\nuptime, w:shows system uptime and current activities\nacct : accounting program for system resources\nnetstat: displays general networking statistics\nnetsstat: displays NFS networking statistics\nperfview: helps viewing MeasureWare data in GUI \nipcs : shows status info. about IPC activities\nipcrm : removes specified message queue, semaphore set or shared-memory segment\nnice : run a command at non-default priority\nrenice : alters the priority of a running program\nbdf, df : displays the amount of free disk space\ndmesg : shows the most recent diagnostic messages in system buffer\nswapinfo: prints info. About device and file system paging space\nsysdef: analyzes and reports tunable configuration parameters from a running system\n
In monospaced text, also known as non-proportional text, all the characters are of an equal width. So while in a normal font, i is thinner than W is, in {{{monospaced text, i and W are the same width}}}.\n\nAlso, <<tag Formatting>> and [[macros|Macros]] that are in a monospaced block are not executed. For example:\n\n{{{\n<<today>>\n}}}\n\nTo add a monotype text block, enclose the text in triple squiggly-brackets: \n{{{\n{{{This is monotype}}}\n}}}
Settings.\n\nThe biod processes are the NFS client side daemons that help local applications use the remote file system. They provide the use of local buffer cache and read ahead functions necessary for adequate performance. It was the case that the more of these daemons you start the better your performance up to a point of about 8 * the number of processors in the system. However with the release of 9812 this is no longer the case. On multi-CPU systems you shouldn't start more biods then the number of processors in the system. This value can be set in the file /etc/rc.config.d/nfsconf using the variable NFS_BIODS.\n\nThe nfsd daemons process the incoming file system requests on an NFS server. A good starting point for the number of these is to use 4 + 2 * the number of disk drives in all exported file systems. For instance if you have one file system on a 5 disk stripe exported and one single disk file system you would start 16 nfsds. However if you have a large number of clients you may want to scale this number up somewhat. Tests show that improvements in throughput continue until you reach about 8 * the number of processors in the machine. The basic idea behind this is that the first nfsd acts as a master picking up requests from the network and passing them on to its children. You want the situation where there is at least one child free at any given time so the OS doesn't clog with requests waiting for the master nfsd to pick up and hand off, thereby causing unnecessary retransmission of data and/or requests from the client.\n\nKernel Parameters - Server\n\nOn 64-bit 11.0 maximum BufferCache is nearly infinite (~3.9TB). If the machine is nothing but an NFS server (and it should be) then you should set BufferCache static by setting the parameter bufpages. Take the amount of memory (in KB) you wish to devote to BufferCache and divide by four to get the value of bufpages. A memory page by default is 4K whereas a buffer cache page is 2MB. This can be misleading as the kernel parameter name (bufpages) seems to imply the number of buffer pages when it really refers to the number of memory pages to allocate to BufferCache. If however your NFS server is doing other tasks that may be memory intensive you will need to set dynamic BufferCache. The defaults are 5% to 50% or main memory devoted to BufferCache and is allowed to grow or shrink within those bounds depending on the memory needs of all programs running on the machine. In this type of an environment memory may become fragmented which will hinder your large memory application from allocating large pages of memory, which are more efficient then many smaller segments of memory.\n\nninode or vx_ninode - These parameters determine the size of a the i-node (HFS) and the VxFS i-node tables for use by the file system. If an i-node for the file you are trying to access is in one of these tables then the OS doesn't have to go to the disk to find it, then read the information. These values should be set based on the number of files you expect to have open at any given time. These should not be set too high as the tables are searched sequentially which means that once you reach a certain size it can be faster to simply go to disk for the information.\n\nvx_ncsize -- VxFS directory name lookup cache. In HFS this table is determined by the size of the ninode parameter. For VxFS it is a separate parameter. This table does the same as the i-node cache for directories. Again this shouldn't be too large as it is also searched sequentially.\n\nbufpages -- On the server this should be as large as possible while still leaving room for other necessary programs. For instance you want to leave room for your backup software as well as the OS and any tools you may need to manage the machine (glance, measureware, Big Bother, etc.)\n\nKernel Parameters for the Client\n\nbufpages -- On the client this should be as low as you can live with. Some engineers recommend that anything more than 300MB will get you into trouble. This really depends on what the machine is doing however. If you have an application that would benefit from a larger buffer cache (i.e. MSCNastran) then you will have to make a trade off of based on the amount of NFS activity vs. the need for speedy local FileSystems. If there is a great deal of writing across NFS mounts you may have to sacrifice local application performance for overall machine performance by setting bufpages low. Since NFS must lock all buffer cache activity when you close a file, local applications may run faster in this environment then if you had a large buffer cache. However if the machine does infrequent writes over NFS or only reads from NFS FileSystems then you would be better off keeping the larger BufferCache.
Regardless of operating system, an NFS server performs best when it is an NFS server and nothing else. It is never a good idea to mix an NFS server and a client on the same machine. Sometimes however this is a necessary evil. On HPUX (10.20 or 11.0) you will pay a hefty penalty for configuring this type of a setup. The way the NFS client in HPUX is programmed you need to limit the amount of buffer cache allowed on the machine. See section 3.1 for a discussion of buffer cache settings. With 11.i this limitation has been lifted. NFS on HPUX is currently based on ONC 1.2 that was initially part of Solaris 2.2. Hence if you administered Sun machines running Solaris 2.2 or 2.3 you will see the same types of problems with HPUX today that you did at that time. In the future HP is working on a port of ONC 2.3 that was first included in Solaris 8. Once this port is complete HPUX should be on-par with Sun with regards to NFS software. For the most part with 11.i and hopefully some of these fixes will be back ported to 11.0, HPUX will be a solid NFS platform with the exception of the automounters, both NFSv2 based automount and the nfsv3 based autofs automounter. Problems can occur when the NFS server they are using reboots. This was the case in earlier releases of Solaris as well. If you are using the one of the automounters with fairly simple maps -- either local or NIS(+) you shouldn't have many problems other then the server reboots, however, the more complex your maps become the worse your troubles will be.\n\nIn section 4 you saw that HFS provides for much better local performance than does VxFS for local FileSystems. However for an NFS exported file system you should use VxFS. The RFC for NFS requires that when an application closes an NFS file on a client, the data in that file must reside physically on the server's disk before it is allowed to continue. This means that the client must purge its own buffer cache so that all of the file has been transmitted to the server. This is one problem with large buffer cache on a client since the file does not keep track of the buffers it resides in the OS must walk all buffers sequentially in order to find any buffer containing parts of the files. Once this is complete the client then informs the sever that it must flush all of its buffers containing the parts of this file (this is very similar to an fsync() call in ANSI-C). Unfortunately HFS has the same underlying buffer cache problem as NFS. The OS must walk all of buffer cache to find pages belonging to this file. While buffer cache is being checked no other activity can be done within buffer cache to eliminate the possibility of corrupting data. This halts all file system activity on both the client and the server until all buffers have been searched and the found pages have been purged. VxFS however has the notion of an r-node, which is an abstraction of the physical i-node residing on the disk. Within this abstraction VxFS has structures that keep track of both dirty and clean buffer cache pages associated with each file, therefore eliminating the need to lock all of buffer cache in search of the right pages to flush.
NXNastran is available from [[UGS|http://www.ugs.com]]\nHP Strategic Alliance Manager for UGS - Jeff Wall\nHP Technical Support for NXNastran: Pari Rajaram Pari.rajaram@hp.com\nUses HP-MPI to achieve parallel performance.\n
SOL103 NormalModes, RealEigenvalues - most datasets (dmp available)\nSOL111 ModalFrequencyResponse – second most (dmp available)\nSOL101 LinearStatics (dmp available)\nSOL108 DirectFrequencyResponse (dmp available)\nSOL200 DesignOptimization\nSOL106 NonlinearStatics\nSOL107 DirectComplexEigenvalues\nSOL109 DirectTransientResponse\nSOL110 Modal ComplexEigenvalues\nSOL112 ModalTransientResponse (dmp available)\nSOL601 Nastran spawning [[ADINA]]\n\n
{{{<install_dir>/msc<version>/<arch>/nastran}}}\nA C compiled binary file parsing the run templates:\n{{{<install_dir>/bin/nast<version>.lcl}}}\n{{{<install_dir>/bin/nast<version>.dmp}}}\nIt is launched by the MSCNastranCommand {{{<install_dir>/bin/msc<version>}}} script.
Often have a keyword equivalent and can be set in any one RunConfigurationFile or on the command line or in a NastranStatement as in the following examples:\n{{{\nnastran buffsize=16385\nnastran sys194=1\nnastran system(199)=20\nnastran system(263)=8\nnastran system(273)=1\n}}}\nSee MSCNastranDocumentationLibrary's InstallationOperationsGuide and QuickReferenceGuide for more details\nor type\n{{{\n<install_dir>/bin/msc<version> nastran help all\n}}}
s easy to create NumberedBulletPoints.\n\n 1. Use a single '#' at the start of each line\n 2. and the tiddler will automatically\n 3. start numbering your list.\n 1. If you want a sub-list\n 2. within any bullets\n 3. add two '#'s at the start of the lines.\n 4. When you go back to a single '#'\n 5. the main numbered list will start up\n 6. where it left off.
Olivier.Schreiber@hp.com (323)762 1798\nhttps://ecardfile.com/id/OlivierSchreiber\nhttp://techmktg.rsn.hp.com/people/oliviers/index.html\n
Introduced with HP-UX 11i, an Operating System Environment consists of the basic HP-UX 11 operating system and software to provide a complete user environment for commercial and technical systems. There are two families of Operating System Environments: one for commercial computing; and one for technical computing. For commercial systems such as database servers or corporate level mission-critical computing systems there are three environments. Each environment is a superset of the previous:\n Basic Operating Environment\n Enterprise Operating Environment\n Mission Critical Operating Environment (a superset of the previous two)\n\nFor technical computing systems such as compute or file servers there are two operating environments:\n Minimal Technical Operating Environment (MTOE)\n Technical Computing Operating Environment ([[TCOE]]) (also a superset of MTOE)\n\nSee also:\n[[HP-UX 11i Platform With Choice|http://www.hp.com/products1/unix/operating/choice/index.html]]\n[[HP-UX 11i v1 operating environments|http://docs.hp.com/hpux/os/11i/]]\n[[HP-UX 11i March 2003 Release Notes|http://docs.hp.com/en/5187-2255/index.html]]\n[[HP-UX Application Availability Matrix Overview|http://www.software.hp.com/MATRIX/]]\n
OptiStruct is available from [[Altair Engineering|http://www.altair.com]] \n\nHP Strategic Alliance Manager for Altair Engineering - Jeff Wall\nHP Technical Support for OptiStruct - OlivierSchreiber\nSee OptistructTuningGuide relative to this application details.\n\n
Several methods to run Optistruct affecting ResourceUsage are possible:\n*Automatic memory allocation:\n{{{optistruct.hp11_ia64 f_e.parm}}}\n*Run in core. As much data as possible is kept in [[RAM]] rather than written to disk:\n{{{optistruct.hp11_ia64 f_e.parm CORE=in}}}\n*Run out of core ([[RAM]]). This is most I/O intensive method. Solver code path is similar to in-core:\n{{{optistruct.hp11_ia64 f_e.parm CORE=out}}}\n*Run minimum core. More data is written to disk than in of out-of-core method. Solver code path is not the same as out-of-core or in-core:\n{{{optistruct.hp11_ia64 f_e.parm CORE=min}}}\n\nDistribution of scratch files:\nOptiStruct uses Boeing's sparse matrix solver (BCS solver) for the linear equations' solution.\nThe BCS solver and other parts of optistruct have distinct scratch files.\nThe BCS solver's scratch files have {{{*.[w,s][4,5]*}}} extensions.\nThe rest of optistruct scratch files have {{{*.scr[atch]}}} extensions.\nBy default all scratch files are written to current working directory.\nBCS solver scratch files can be distributed to a specific directory with {{{-SCRATCH_DIR=<path>}}} option or with the {{{OS_TMP_DIR}}}\nOptistruct's scratch files can be distributed to a specific directory with {{{-tmpdir=<path> [-tmpdir=<path2>... -scrfmode=stripe]}}} option featuring high level stripe disk emulation.\n
PAM-Crash is available from [[ESI Group|http://www.esi-group.com]] \nHP Strategic Alliance Manager for ESI - Lee Fisher\nUses HP-MPI to achieve parallel performance.\nIf additional assistance in benchmarking this product is needed, please contact Michael.Riedmann@hp.com\n\n\n
PAM-Flow is available from [[ESI Group|http://www.esi-group.com]] \nHP Strategic Alliance Manager for ESI Group - Lee Fisher\nUses HP-MPI to achieve parallel performance.\nIf additional assistance in benchmarking this product is needed, please contact Michael.Riedmann@hp.com
For Parallel [[ATA]] Retroactive renaming of [[ATA]]
The "File System" tab is where you find the most difficulty. Now that you have a machine with a disk, how to you break it up? Our recommendation is to take the file systems that you are given by default with exception to /home and increase their sizes. This really depends on the size of disk you have and the way your users work. If your users tend to keep /tmp full, give it more space, if not only give it what you think you need. The important file systems here are /opt and /var.\n\nWhen installing all the compilers, /opt will grow quite large. The /var file system grows from three reasons. First it is the place where swinstall puts all of the old files when you install patches so that you can remove a patch at a later date. Secondly, /var/adm/crash holds any crash dumps the system produces. When HPUX "panics" it saves a subset of memory into what is called a crash dump. If it is a one time crash you can simply remove the directory created under /var/adm/crash. If it is a persistent problem you may tar up that directory and send it to HP for evaluation. Lastly, /var fills with the many UNIX log files as well as some log files for applications including most sites home-grown scripts.\n\nFor a 9 GB disk on a machine with 4G of [[RAM]], here are recommended file system sizes. Notice that one leaves a little space at the end of the volume for future expansion if needed.\n\nPartition Size\nswap 4096MB\n/stand 84MB\n/ 140MB\n/opt 1024MB\n/var 1024MB\n/tmp 1024MB\n/usr 750MB\n\nFor a system with larger physical memory, additional swap will need to be created out of other disks. For systems with large disks used as a boot disk these values can be larger, or more swap can be allocated on the disk.
Experienced systems administratord believe in "if it ain't broke, don't fix it" and first response to installing patches is don't, if you don't have to. However at some point one must upgrade our systems for one reason or another. Depending on one's environment, one may need to upgrade or patch systems once a year or once a week. Software developers tend to upgrade more often than end customers to gain new compiler or OS functionality that will help with their work. It is also a good idea to release software that has been tested on the latest version of the OS so that one's customers can assume that the application will run on the latest hardware without worry. Since Hewlett-Packard takes a different approach to patches than many other vendors there is sometimes confusion. HP's reasoning behind its patching scheme is fairly simple. Don't change the OS revision, but still provide the latest technological developments. In this way, if an application is developed on HPUX 11.xx, there is no need to re-qualify the application for later releases of 11.xx, and therefore reduces the costs associated with supporting the product. Especially since 11.xx might have been out for several years. HP uses its patch mechanisms for not only problem fixes, but also to add new functionality to the OS.
This is the association of a Core:\n*Alpha EV7 64 bit\n*PA-RISC 2.0 64 bit\n*Itanium2 or IA64 \n*AMD64 (Opteron)\n*EM64T (Xeon)\n*x386 or IA32\nan OperatingSystem:\n*Digital Unix\n*HP-UX 64 bit 11.00, 11.11(11iv1) (for PA-RISC), 11.23(11iv2) for Itanium2\n*[[Linux]] 64 bit\n*[[Linux]] 32 bit\nand a Chipset with associated Caches:\n*zx1, zx2 for NUMA systems\n*sx1000, sx2000 for [[ccNUMA]] (cell-based) systems\nA single (SC), dual (DC) or quad core makes up a Processor.\nA Processor attaches through a socket to a Chipset.\nProcessors are grouped in nodes (NUMA) or cells ([[ccNUMA]]) forming SMP systems.\n(2-Processors/4-Core node/system means 2 processors populate 2 sockets with 2 Cores per Processor)\nNodes and Systems may be networked into larger DMP clusters via [[Interconnects]].\n
PowerFLOW is available from [[Exa Corp.|http://www.exa.com]]\nHP Strategic Alliance Manager for ESI Group - Lee Fisher\nUses HP-MPI to achieve parallel performance.
*HP-UX: {{{mpsched}}}\n{{{\nmpsched –h # prints a help message\nmpsched –s # returns hardware configuration (no other)\nmpsched –g # enables gang-scheduling (no other)\nmpsched –c spu # binds spu to the specified process; can be combined with –p, -P, -T options\nmpsched –l ldom # binds processes to locality-domain, ldom\nmpsched –p pid # specifies process id, pid\nmpsched –q # query about process and thread bindings\nmpsched –T policy # applies policy to the threads of the processes\nmpsched –P policy # applies policy to the processes \nmpsched –P ppolicy –T policy-t # applies ppolicy to processes and tpolicy to threads of processes\n}}}\nlaunch policies can be (one or more of):\nFILL # Fill First\nLL # Least Loaded (bound)\nPACKED # Packed Launch\nRR # Round Robin\nDefault HP-UX launch policy: LL (unbound) for processeses FILL (unbound) for threads \nFor oversubscription, use Default HP-UX launch policy and\n Gang Scheduling \n setenv MP_GANG=ON or mpsched –g (no other option)\n\n*Linux: numactl\n{{{\nnumactl --hardware # to check free/exhausted memory because of [[ccNUMABufferCacheInteraction]]\nnumactl [--interleave nodes][--preferred node][--cpubind nodes][--localalloc][--membind nodes] command {arguments}\n}}}\nUse numactl command to permanently bind a process to a specific CPU and force it to use local memory \n{{{\nnumactl --cpubind=0 --localalloc ./hello_world.x\nnumactl --cpubind=0 --membind=0 ./hello_world.x\n}}}\n\n*HP-UX and [[Linux]]: [[HP-MPI]]\n{{{\nmpirun -cpu_bind=[v,][policy[:maplist]] -np <#cpus> command\npolicy=<LL|RANK(default)|LDOM|RR|RR_LL|CYCLIC|FILL|FILL_LL|BLOCK|MAP_CPU|MAP_LDOM|PACKED|HELP>\nMAP_CPU , MAP_LDOM=<list of cpu#s>\n$mpirun -np 8 -cpu_bind=v,map_cpu:0,2,4,6,1,3,5,7 ./hello_world.x\nMPI_CPU_AFFINITY set to MAP_CPU, setting affinity of rank 5 pid 10074 on host dl585a to cpu 3\nMPI_CPU_AFFINITY set to MAP_CPU, setting affinity of rank 2 pid 10071 on host dl585a to cpu 4\nMPI_CPU_AFFINITY set to MAP_CPU, setting affinity of rank 1 pid 10070 on host dl585a to cpu 2\nMPI_CPU_AFFINITY set to MAP_CPU, setting affinity of rank 3 pid 10072 on host dl585a to cpu 6\nMPI_CPU_AFFINITY set to MAP_CPU, setting affinity of rank 4 pid 10073 on host dl585a to cpu 1\nMPI_CPU_AFFINITY set to MAP_CPU, setting affinity of rank 7 pid 10076 on host dl585a to cpu 7\nMPI_CPU_AFFINITY set to MAP_CPU, setting affinity of rank 6 pid 10075 on host dl585a to cpu 5\nMPI_CPU_AFFINITY set to MAP_CPU, setting affinity of rank 0 pid 10069 on host dl585a to cpu 0\n[...]\n}}}\nA RANK binding on a clustered system uses the number of ranks and the number of nodes combined with the rank count to determine the cpu binding.\nOn a Cellular system, with multiple users , the LL strategy is recommend rather than RANK. Least Loaded allows the Operating System to schedule the computational ranks, and then the -cpu_bind capability locks the ranks to the cpu.\n\n*HP-UX: Process Resource Manager, PRM
prospect – Tool to Measure Performance\nTool: prospect\nWhere: /apps/prospect/prospect_[ver]/prospect \nDescription:\nProspect uses Kernel Instrumentation (KI) tracing and Kernel Timing Clock (KTC) to gather statistical profile of all processes as well as the system \nFeatures:\ncollects info. over an interval of time\nworks in two modes: ‘super’ time command and statistical profiler\nprofiles many applications both in HP-UX and Linux\nprospect – Examples of Usage …\nProspect [options] command \nWhere options are:\n–v : time using KTC clocks including sys. Calls\n–V2 : time using KI tracing of just ‘command’\n–V3 : time ‘command’ and its descendents\n–V4 : time *all* processes using KI tracing\n–Vk : generate /stand/vmunix profile summary\n–M : merge multi-threaded profiles into one process-wide profile\n–F filename: write an ascii output file (default:none)\n-?? : more advanced command line options\nprospect –V2 –f output2 prog1\n outputs information only about prog1\nprospect –V3 –f output3 prog2\n outputs information about prog2 and all its descendents \nprospect –V4 –f output4 prog3\n outputs information about prog3 and all other processes that ran during that interval\nprospect –T Tfile1 prog4\n records all traces during prog4 ran into a binary file\nProspect –t Tfile1 –f output5\n read the trace file Tfile1 and write output file outpu5\n\n
Define a scheduling allocation domain\n - Optional product for HP-UX 11i systems\n - Dynamic configuration and application binding\n - Flexibility of ownership and access control\n - Better manageability of overall system \nKey Benefits:\n - Server consolidation\n - Integration with PRM\n - Dedicated resources to batch jobs\n - Service special needs\n - Works with HP Partitions, nPars and VPars\n - Hardware and Platform independent\nBasic Facts Behind Psets\nSystem is booted with a default Pset with all processors\nSuperuser is always the default owner of default Pset\nDefault Pset can never be destroyed\nProcessor 0 is always belongs to default Pset and cannot be reassigned to a user-created Pset\nUsers can create and destroy their own Psets\nSuperuser or user in PRIV_PSET privilege group can only reassign processors (except 0) to user created Psets\nDefault Pset is always available to all applications/users\nDestroying user Psets moves applications and processors to the default Pset\n{{{\npsrset –c : creates a pset with default psetid\npsrset –i 1 : queries attributes of pset 1\npsrset –d 1 2 : destroys pset 1 & 2\npsrset –d all : destroys all psets of user\npsrset –c 2 4 6 : creates pset 2 and assigns spus 4 & 6\npsrset –a 3 5 7 : assigns spus 5 & 7 to pset 3\npsrset –b 1 432: binds pid 432 to pset 1\npsrset –U 2 21 : binds process of uid 21 to pset 2\npsrset –g 1 20 : binds process of pgid 20 to pset 1\npsrset –e 3 a.out : executes a.out in pset 3\npsrset –t 1 OWNID=100: changes owner id of pset 1 to 100\npsrset –t 1 PERM=700 : changes permission of pset 1 to 700\n}}}
For systems running batch jobs, or more efficient resource allocation, load management and job processing, HP recommends using a queuing system such as:\n*[[Platform Computing|http://www.platform.com]]’s Load Sharing Facility (LSF)\n*[[Altair|http://www.altair.com]]’s PBS Pro\n
Redundant Array of Independent Disks, for fault tolerance and performance.\n*RAID 0: Data striping (file blocks spread across multiple disks), increases Disk I/O bandwidth. Note that the filesystem is in jeopardy if any of the disks fail but for scratch files, this is optimum.\n*RAID 1: disk mirroring for redundancy, fault tolerance.\n*RAID 2: bit level data striping\n*RAID 3: RAID 0, plus one dedicated disk for error correction data.\n*RAID 5: RAID 3, with one correction disk per 2 user disks. Will severely degrade performance except in the case of [[SFS]] product.\nCharacteristics affecting performance of a RAID device are:\n# RAID chunk or stripe depth\n# Filesystem (see below) and its related parameters\n# Number and type of channels\n# The arrangement of the raid disks on these channels\nThe larger the number of data saturated disk channels, the more total bandwidth is obtained. \nOne channel or disk controller for every 4 or 5 disks is recommended for up to fifty disks.\nInterleave the channels by selecting RAID members in round robin fashion.\nFor example, for 3 SCSI channels, and 12 drives:\nChannel 1 (drive0, drive1,drive2, drive3) ; \nChannel 2 (drive 4, drive5, drive6, drive7) ;\nChannel 3 (drive8, drive9, drive10, drive11).\nConfigure the RAID member drives in following order {0,4,8,1,5,9,2,6,10,3,7,11}\nBest performance for a RAID system occurs when application IO, RAID Chunk size, and file system block size are even multiples of each other and using full disks as detailed from HP-UXFileSystems and LinuxFileSystems or [[RAID and Data Protection Solutions for Linux|http://linas.org/linux/raid.html]], [[Linux Software RAID HOWTO|http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Software-RAID-HOWTO.html]],\n[[Linux-RAID FAQ|http://www.faqs.org/contrib/linux-raid/x37.html]]
Random Access Memory or RealMemory.\nA fully populated memory configuration is desirable with all memory slots filled. If there are some open memory slots then maximum MemoryBandwidth and lowest MemoryLatency are not achieved and performance of CAEApplications can suffer.\nFor a rx2600 system, for example, 6gb is the minimum of memory that fully populates the memory slots.\nLinuxMemory \nHP-UXMemory
Radioss is available from [[Mecalog Group|http://www.radioss.com]]\nHP Strategic Alliance Manager for Mecalog Group - Yves Bostroem\nUses HP-MPI to achieve parallel performance.
\n{{{\ncat >rcf <<EOF\n$licensing\nauth=1700@minime.rsn.hp.com $change with specific license [server|path]\n$auth=27003@moschd.bbn.hp.com $this license is commented out\n$convenience options\nbat=no\nscr=yes\nnews=no\nnotify=yes\nold=no\nappend=no\ndelete=xdb,pch,plt,op2,des,f01,f02\n$diagnostic options\nSYSTEM(20)=0\ndiag=5,6,8,13,15,19\nSYSTEM(166)=2\n$resource allocation options\nSYSTEM(151)=1\nsdirectory=. $should override with a scratch filesystem path\n$dmp options\nslaveout=yes\nhostovercommit=yes\n$hpmpi=yes\n$debugging options\ndcmd=gdb\n$performance tuning options\nbuffsize=65537\nmaxset=15\nEOF \n}}}\n\ndiag=5 Prints the BEGIN time in the [[log]] file for each functional module. \ndiag=6 Prints the END time in the [[log]] file for each functional module \nModules that consume less time than the threshold set by SYSTEM(20) \ndo not create a message.\ndiag=8 Prints matrix trailers in [[f04]] file as the matrices are generated.\ndiag=15 Prints table trailers in [[f04]] file as the tables are generated.\ndiag=13 Prints OpenCore data\ndiag=19 Prints selection data for MPYAD and FBS methods\n\nRunConfigurationFile(s) may be placed in the following paths:\nLocal, {{{.nast<version>rc}}}\nUser Home directory RunConfigurationFile {{{.nast<version>rc}}}\nNode specific {{{<install_dir>/conf/net/<node>/nast<version>rc}}}\nArchitecture specific {{{<install_dir>/conf/<arch>/nast<version>rc}}} RunConfigurationFile values.\nSystem-wide {{{<install_dir>/conf/nast<version>rc}}} RunConfigurationFile values.
[[SATA]] (Short for SerialATA) interface specification was first released in 2001 as a replacement for the Parallel [[ATA]] interface used in IBM compatible computers. [[SATA]] is capable of 150MBps to each drive within a disk array, is backwards compatible for existing [[ATA]] and offers a thin, small cable solution for easier cable routing and better airflow in the computer when compared to the earlier ribbon cables used with [[ATA]] drives.\n[[SATA]] drives are [[ATA]] (also known as [[PATA]]) drives with a serial interface and are not recommended in server class machines for hardware robustness reasons.\n
Vendor's WEB page - http://www.cradle.co.jp/eindex.htm\nHP Strategic Alliance Manager for SCTetra from Software Cradle Toshiaki Urano\nSCTetra uses mpi to achieve parallel performance.
[[HP StorageWorks Scalable File Share HP SFS|http://www.hp.com/techservers/products/sfs.html]] is a high performance/high reliability cluster file system based on open source [[Lustre|http://www.clusterfs.com]] using [[RAID]] 6 served over Inifiniband [[Interconnects]] (http://www.hp.com/techservers/hpccn/linux_gfs/index.html).\n[[SFS]] is a Cluster Alternative to Direct Attached Storage. \nApplying principles of clusters to file systems and storage allows the sharing of data sets without performance penalty. \nFor an Opteron 2.2 GHz dual core processors in a 2-socket, 4-core system, an HP StorageWorks Scalable File Share (HP SFS) - [[RAID]] 6 with 32 TB in 34 SFS20 storage enclosures/8 DL380-G4 Object Storage Server/Infiniband would equal a typical Direct Attached Storage of 10 SCSI drives in a Modular Smart Array 30 Enclosure (MSA30) [[RAID]] 0 stripe with 2 controllers with the additional following advantages:\n*Data is shared efficiently across a cluster (NFS is not a viable option)\n*No need to configure for a subset of nodes for local I/O\n*Ease to size up.\n\n
HPCD ISV Solutions Engineering and Expertise, Hewlett-Packard Company
CAE Tuning Guide
Star-CD is available from [[CD Adapco Group|http://www.cd-adapco.com]]\nHP Strategic Alliance Manager for Computational Dynamics Ltd. - Jeff Wall\nUses HP-MPI to achieve parallel performance.
fix for IE behaviour\nbody {position:static;}\n.tagClear{margin-top:1em;clear:both;}\n/*}}}*/
!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n
Nothing will negatively impact performance more than swapping. Previous benchmark experience has shown that adding additional [[RAM]] to memory-starved applications can improve performance by as much as 400%.\n\nTo improve [[Swap]] efficiency, use dedicated, raw swap partitions that are on different physical disks than the application data. Each partition will be used individually in a "round robin" fashion at the block level as long as the priority of each [[Swap]] partition is the same - thus virtually striping ([[RAID]] 0) the swap space.\n\n[[Swap]] space {{{swapinfo -tam}}} (HP-UX) or {{{free}}} ([[Linux]]) command) is usually set to 1.5x - 2x of [[RAM]] using {{{swapon}}} through a device or a filesystem.\nSetting [[Swap]] to 1x [[RAM]] is not a bad idea because then when one runs one knows one is using [[RAM]] and not paging/swapping, but the side effect is when one needs a little bit more memory, instead of running, one fails. \nReset KernelTuning {{{swapmem_on=0}}} (SwapMem).\n(If a program requests a certain amount of memory then one must have at least that amount of [[Swap]] space free and available otherwise the allocation request will fail.)\n
Although the documentation seems to suggest that it is possible to use the kernel parameter swapmem_on to allow the system to use memory as swap thereby reducing the amount of swap space needed, it is not a good idea. This parameter does not actually use memory as swap, it will however allow the over subscription of swap space. With this parameter turned on the system will give an application the memory it allocates without actually reserving swap space for that piece of memory (the allocation is acutally delayed until vhand needs to deallocate the process. In the event the system does need to swap out memory pages this will cause it to panic or hang as there isn't any space available for these pages of memory. I have also seen that the OS will allow no more of this activity then 1/2 of the size of main memory. So if you have a machine with 16GB of memory and a 1GB swap partition you will only get to use a little more than 2GB of your memory (not including BufferCache). It has been my experience that it is far easier to simply allocate swap the same size as main memory. If your application fails when it tries to allocate memory this is usually the cause, so check your swap space first (swapinfo as root).
<html>\n<P>The table below shows the recommended parameter settings for L-, N- and V-Class servers running under HP-UX 11.0\nwith more then 1 GB of memory.</SMALL></P>\n<TABLE BORDER NOSAVE>\n\n<TR>\n <TH BGCOLOR=AQUA WIDTH=10%>Parameter Name</TH>\n <TH BGCOLOR=AQUA WIDTH=10%>Default Value</TH>\n <TH BGCOLOR=AQUA WIDTH=15%>Our Value</TH>\n\n <TH BGCOLOR=AQUA WIDTH=65%>Why?</TH>\n</TR>\n\n<TR>\n <TD>STRMSGSZ</TD>\n <TD>0</TD>\n <TD>65535</TD>\n <TD>Maximum number of bytes that can be sent in the\n data part of a STREAMS message using the function putmsg\n and write. If STRMSGSZ is 0, the maximum\n data message size is infinite.</TD>\n\n</TR>\n\n<TR>\n <TD>swapmem_on</TD>\n <TD>1</TD>\n <TD>0</TD>\n <TD>Allows the over subscription of swap so applications can run that \n can not allocate swap space (for example, when memory is smaller than \n swap). swapmem_on is enabled for 16G servers. However, it appears to \n take memory away from the free list if swap is not big enough.\n </TD> \n</TR>\n\n<TR>\n <TD>vps_ceiling</TD>\n <TD>16</TD>\n <TD>64</TD>\n <TD>Maximum variable page size should be higher on V-Class servers due \n to a larger cache. This allows up to 64K pages.\n </TD>\n</TR>\n\n<TR>\n <TD>shmmax</TD>\n\n <TD>0x4000000</TD>\n <TD>0x7B000000</TD>\n <TD>Maximum use of shared memory.</TD>\n</TR>\n\n<TR>\n <TD>nstrpty</TD>\n <TD>calculated</TD>\n\n <TD>60</TD>\n <TD>Number of STREAMS-based pseudo-terminals.</TD>\n</TR>\n\n<TR>\n <TD>maxusers</TD>\n <TD>32</TD>\n <TD>250</TD>\n\n <TD>The maxusers default is too small for large memory systems. The \n value of maxusers is used to calculate other parameters.\n </TD>\n</TR>\n<TR>\n <TD>maxswapchunks</TD>\n <TD>256</TD>\n <TD>16384</TD>\n <TD>Maximum value.\n The value of maxswapchunks only needs to be large enough to \n handle the swap space.</TD>\n\n</TR>\n\n<TR>\n <TD>maxdsiz</TD>\n <TD>0x4000000</TD>\n <TD>0xF6000000</TD>\n <TD>The maxdsiz default is too small for large memory systems.</TD>\n</TR>\n\n<TR>\n <TD>maxdsiz_64bit</TD>\n <TD>0x40000000</TD>\n <TD>0xF6000000</TD>\n <TD>The maxdsiz_64bit default is too small for large memory systems. \n Be careful, however, when setting the value larger then memory; \n otherwise, applications can run into trouble.</TD>\n</TR>\n\n<TR>\n <TD>maxssiz</TD>\n\n <TD>0x800000</TD>\n <TD>0x005000000</TD>\n <TD>The maxssize default is too small for large memory systems.</TD>\n</TR>\n\n<TR>\n <TD>maxssiz_64bit</TD>\n <TD>0x800000</TD>\n\n <TD>0x5000000</TD>\n <TD>The maxssize_64bit default is too small for large memory systems.\n </TD>\n</TR>\n\n<TR>\n <TD>lotsfree</TD>\n <TD>0</TD>\n <TD>131072</TD>\n\n <TD>Upper bound from which the paging daemon will begin stealing pages. \n Must be set by editing the /stand/system file instead of using SAM.</TD>\n</TR>\n\n<TR>\n <TD>minfree</TD>\n <TD>0</TD>\n <TD>8192</TD>\n <TD>Minimal amount of free memory that is tolerable. If free memory \n drops below this amount, the system begins deactivating processes. Must \n be set by editing the /stand/system file instead of using SAM.</TD>\n\n</TR>\n\n<TR>\n <TD>desfree</TD>\n <TD>0</TD>\n <TD>32768</TD>\n <TD>Desired amount of free memory. This is the lower bound at which the \n paging daemon begins stealing pages. Must be set by editing the \n /stand/system file instead of using SAM.</A></TD>\n</TR>\n\n<TR>\n <TD>vx_ncsize</TD>\n <TD>1024</TD>\n <TD>8000</TD>\n <TD>For a large NFS server with VxFS file systems. This sizes the \n separate DNLC for VxFS.</A></TD>\n</TR>\n<TR>\n <TD>ninode</TD>\n\n <TD>calculated (1818)</TD>\n <TD>8000</TD>\n <TD>Provides more space for the i-node cache--this is good for NFS or \n other servers that open or stat many files frequently. For heavily \n loaded NFS servers, set the value of ninode between 100000 and \n 200000.</TD>\n</TR></TABLE>\n\n\n<!-- END CONTENT --> \n\n\n\n </td>\n </tr>\n </table>\n\n </td>\n\n<!-- END CONTENT COLUMN TEMPLATE --> \n\n\n\n </tr>\n</table>\n</html>
The Technical Computing Operating Environment ([[TCOE]]) is a superset of MTOE and\nadds products such as the HP Message Passing Interface (HP-MPI), the HP Math Libraries (MLIB). The [[TCOE]] is the proper Operating System Environment for CAE systems and is available for both technical servers and workstations.\n\nChoosing the [[TCOE]] option available both for PA-RISC and [[Itanium2]] architectures\nat the time of the operating system installation or upgrading to it will provide for the basic KernelTuning.\nIf not, one can manually increase many kernel parameters and achieve the same result as described in KernelParametersAdjustment.\nCheck what OE--if any is installed with {{{/usr/sbin/swlist|grep OE}}}\n
<<list>>
You can create a table by enclosing text in sets of vertical bars (||, or shift-backslash on your keyboard). \n|!Headings: add an exclamation point (!) right after the vertical bar.|!Heading2|!Heading3|\n|Row 1, Column 1|Row 1, Column 2|Row 1, Column 3|\n|>|>|Have one row span multiple columns by using a >|\n|Have one column span multiple rows by using a ~|>| Use a space to right-align text in a cell|\n|~|>| Enclose text in a cell with spaces to center it |\n|>|>|bgcolor(green):Add color to a cell using bgcolor(yourcolorhere):|\n|Add a caption by ending the table with a vertical bar followed by a c|c\n\nHere's the code for the above table:\n{{{\n|!Headings: add an exclamation point (!) right after the vertical bar.|!Heading2|!Heading3|\n|Row 1, Column 1|Row 1, Column 2|Row 1, Column 3|\n|>|>|Have one row span multiple columns by using a >|\n|Have one column span multiple rows by using a ~|>| Use a space to right-align text in a cell|\n|~|>| Enclose text in a cell with spaces to center it |\n|>|>|bgcolor(green):Add color to a cell using bgcolor(yourcolorhere):|\n|Add a caption by ending the table with a vertical bar followed by a c|c\n}}}
A TiddlyWiki is a [[self contained hypertext document tool|http://www.tiddlywiki.com]].\n
HFS parameter maxbpg is available only using the tunefs command (not the newfs command):\n{{{\n# tunefs -v /dev/vg01/lvol1\n}}}\n super block last mounted on: /lvol_4_8\n magic 5231994 clean FS_OK time Tue Sep 14 11:39:12 1999\n sblkno 8 cblkno 16 iblkno 24 dblkno 56\n sbsize 8192 cgsize 8192 cgoffset 8 cgmask 0xffffffe0\n ncg 3558 size 17760256 blocks 17589457\n bsize 65536 bshift 16 bmask 0xffff0000\n fsize 8192 fshift 13 fmask 0xffffe000\n frag 8 fragshift 3 fsbtodb 3\n minfree 10% maxbpg 156\n maxcontig 1 rotdelay 0ms rps 60\n csaddr 56 cssize 57344 csshift 12 csmask 0xfffff000\n ntrak 32 nsect 39 spc1 248 ncyl 113848\n cpg 32 bpg 624 fpg 4992 ipg 2048\n nindir 16384 inopb 512 nspf 8\n nbfree 2172038 ndir 1250 nifree 7283821 nffree 8634\n cgrotor 198 fmod 0 ronly 0\n fname fpack\n featurebits 0x3 id 0x0,0x0\n optimize FS_OPTTIME\n cylinders in last group 24\n blocks in last group 468\nAbove, maxbpg is 156 and bpg (blocks per cylinder-group) is 624 . This shows that a cylinder-group on this file system is 624 blocks long (or 624 * 64K = 39MB) and one file can take only 156 blocks (or 156 * 64K = 9MB) of this cylinder-group before spilling over into another cylinder-group.\nThis fragments the file system providing quicker lookups the many small files case.\nFor the few, very large files case increase value of maxbpg to 90% of bpg value. This allows one to read a much greater portion of the file (~30MB) before the heads have to move across the platter.\n\nFor a scratch file system only, the following options optimized for speed are recommended:\n{{{\nbehind,fsasync,largefiles\n}}}\nwith:\n * behind - enable asynchronous writes of data to disk\n * fsasync - enable asynchronous writes of metadata to disk\n * largefiles - allow files larger than 2 Gigabytes\nThe kernel parameter (tunable) fs_async can also be used to make asynchronous metadata writes the default. But this could lead to a system rebuild after a power event.
Whereas HFS has many options that affect performance in the build and few in mounting the file system, VxFS is the opposite. VxFS has a large number of options to tune. Here is a middle ground that provides good performance for most CAEApplications. \nMount options used for scratch file systems are below in the sample {{{/etc/fstab}}} line.\n{{{\n/dev/vg01/lvol1 /scratch vxfs tmplog,nodatainlog,mincache=tmpcache 0 3\n}}}\nwith:\n * tmplog - allows the system call (usually write) to return before the intent log has been updated on disk.\n * nodatainlog - this option prevents VxFS from logging synchronous data in the intent log. There is no need to log this data if it is written synchronously. The only problem that can happen is if power is lost in mid-transaction.\n * mincache=tmpcache - this option keeps VxFS from zero'ing out new extents before they are written. As long as the write succeeds this is not a problem, however if something should happen to prevent the write from finishing (crash, power, etc.) then there will be garbage at the end of whatever files were being written at the time.\n\nTunings used. To tune the VxFS file system create the {{{/etc/vx/tunefstab}}} file which stores the tunings and applies them upon reboot for 11i. On 11.0 a new init script is necessary to do this.\n{{{\n/dev/vg01/lvol1 read_pref_io=262144\n/dev/vg01/lvol1 read_nstream=X #set this to the number of disks in the stripe\n/dev/vg01/lvol1 read_unit_io=262144\n/dev/vg01/lvol1 write_pref_io=262144\n/dev/vg01/lvol1 write_nstream=X #set this to the number of disks in the stripe\n/dev/vg01/lvol1 write_unit_io=262144\n/dev/vg01/lvol1 pref_strength=30\n/dev/vg01/lvol1 buf_breakup_size=262144\n/dev/vg01/lvol1 discovered_direct_iosz=16777216\n/dev/vg01/lvol1 max_direct_iosz=5242880\n/dev/vg01/lvol1 default_indir_size=16384\n/dev/vg01/lvol1 qio_cache_enable=0\n/dev/vg01/lvol1 max_diskq=134217728\n/dev/vg01/lvol1 initial_extent_size=64\n/dev/vg01/lvol1 max_seqio_extent_size=2048\n/dev/vg01/lvol1 max_buf_data_size=65536\n/dev/vg01/lvol1 read_ahead=2 #used on 11.23 systems\n}}}\n*read_pref_io, read_unit_io, write_pref_io, write_unit_io, buf_breakup_size - these should be all the same as this is set to a multiple of the stripe size of the logical volume. In the example given in BuildingVirtualDisks this would allow VxFS to use 4 disks with each IO operation. If the stripe size is 128K then 2 disks would be used in every operation. The setting of 256K works for either stripe size. It may not work as well with different stripe sizes.\n*Read_nstream and write_nstream should be set to number of disks in the striped filesystem. \n*Pref-strength controls the amount of read-ahead per disk. Testing with Nastran for example gave 30 as a good value.\n*Max_diskq limits the maximum diskqueue generated by a single file. This amount of data may stay in the buffercache before a writeout of data is forced. \n*read-ahead is a special HP-UX parameter. This parameter can be set to ‘2’ to enable a complex read-ahead strategy.The filesystem is then able to recognize certain IO patterns (e.g. access with strides like matrix operations or reading files backwards like Nastran does) and still prefetch the correct data. The default setting is ‘1’, i.e. only simple continuous forward reads are recognized. Most technical systems (especially if they run Nastran) should set the read-ahead to ‘2’. Before VxFS 3.5 this behavior was controlled globally by a kernel parameter vx_fancyra_enable.\n{{{man vxtunefs}}} provides details about the other lines. Some that may need to be changed for different types of applications are:\n *discovered_direct_iosz, max_direct_iosz - these tunings are to set up the parameters that VxFS will use to decide whether or not to go into discovered DirectIO. The settings chosen above prevent DirectIO.\nWarnings:\n*nstream and pref_io parameters determine the read-ahead and flush behind areas. If they are too big and the storage is too slow one might run into performance trouble (e.g. useless read-ahead).\n*if max_diskq is set too high with a slow storage, the system will appear ‘hung’ while the disk-queue is being flushed (high priority)\n
WAVE, VECTIS, VALDYN, PISDYN, ENGDYN, SABR, RINGPAK, FEARCE are available from [[Ricardo Software|http://www.ricardo.com/]]\n\nUses HP-MPI to achieve parallel performance.
BytesPerWords or bpw is 4 on LP64 systems and 8 on ILP64 systems.
X11 is highly dependent on networking. So the first thing to look for when you have trouble is anything to do with networking. Check the files /etc/rc.config.d/netconf, /etc/nsswitch.conf, /etc/hosts, and /etc/resolv.conf. Make sure that /etc/hosts, DNS, and if applicable NIS have the same information about your machine. Also check the ethernet card itself to make sure its up with the ifconfig command (i.e. ifconfig lan0). Make sure that all the settings in /etc/rc.config.d/netconf are correct. One small one that comes up frequently is ROUTE_COUNT which should be set to 1 if your machine is on the same subnet as the router (which is almost always true).\n\nIn addition to networking, I have found that 10.20 on the newer workstations needs a patch for the CDE login screen (dtlogin) to be successful. Install patch PHSS_21451 after installing the latest ACE release and Quality Pak. For 11.0 you will need patch PHSS_20864 for a problem with dtwm not starting on the workstation.\n\nAnother common problem is that the file systems where X tries to keep its intermediate systems has either filled up or lost its permissions. Check /tmp and /var/tmp to make sure their permissions are set to 777 and they are not full. /var can fill with crash dumps. Look in /var/adm/crash for directories that contain crash dumps. It is ok to delete this directory unless someone from HP has requested the dump to solve a problem.
On cell-based systems, the distance from a cpu to memory in a different cell is greater than it is to memory in the local cell. For that reason HP-UX and [[Linux]] incorporate the notion of cache-coherent Non Uniform Memory Access to give the user control in laying out or running an application to obtain the best performance.\nCell Local Memory (CLM) is 'fast' memory. What is not allocated as CLM is kept as Interleaved Memory (ILM) as shown in [[ccNUMAAdjustment]].\nThe ILM from each cell in the partition is grouped together and is shared across the entire system. A Locality Domain (LDOM) is defined as a related collection of processors, memory, and peripheral resources comprising a fundamental building block of the system (cell). All processors and peripheral devices in a given LDOM have equal MemoryLatency to the memory contained within that locality domain. By default, cell-based systems come with 100% ILM in each LDOM.\nBy default, a single processor set (pset) is created at boot time containing all processors on the system. The status remains the same until new psets are created and configured by users. Psets can be populated only by the root administrator, or his designees; in general, a user will work with psets only when using the lsf batch manager.\nEach process and thread (light weight process) has a binding as well as a launch policy associated with it, that tells the operating system that this process is bound, either to a specific processor, one of the processors in a processor set (pset), or to a processor in an LDOM, or that the process is unbound, and can be placed on any processor, in any pset or LDOM that the scheduler chooses. Binding to LDOMs and psets are mutually exclusive. You may bind to one or the other, but not to both. The launch policy specifically states whether subsequent processes or threads are bound to 1) the next LDOM in round robin fashion, 2) the least loaded LDOM, 3) the starting LDOM until all the processors in that LDOM are filled or 4) the starting LDOM only, packing them in. In addition, the round robin and fill policies state whether child processes and threads inherit the parents' policies or not.\nThe same bindings are available for psets as for LDOMs.\nThe optimum memory access will occur when it is made to the CLM attached to the processor where the process or thread resides; the least optimum memory access will be to the CLM in a different cell. Some percentage of the time (25% on a four-cell system), access to ILM will be as fast as access to CLM, so access to ILM needn't be detrimental. Sometimes it is strategically better to have all data in ILM rather than taking the chance that a process may be in a different LDOM or pset than its data.\nFor optimum performance on a standalone system, applications should run in CLM, so a good starting strategy is to maximize CLM and minimize ILM. One must have enough memory in ILM for the OS and BufferCache. A good rule-of-thumb is to start with 50% of each; on systems with a large amount of memory or running specific applications, 25% of memory in the ILM may be enough. Within a partition (hardware or virtual) make sure that the percentage of ILM is the same for each cell. This percentage is set as the system boots, and can not be modified subsequently. The default is NO CLM.\nNormally the OperatingSystem allows processes to migrate to the least loaded CPU. This makes no sense if all processes have equal load, therfore, be aware of the application's launch policy and modify it using the {{{mpsched}}} (HP-UX) or {{{numactl}}} (Linux) program launcher or better yet HP-MPI options (See ProcessorAffinity). This tells the operating system where the initial process is to be allocated, and where subsequent processes and threads are to be placed. Without a specified launch policy, there will be no binding of a process or thread to a processor or to an LDOM, and the operating system will launch the process into the least loaded LDOM, and within the LDOM to the least loaded processor each time the process needs to be rescheduled! If there is a large amount of data residing in CLM this is guaranteed to be suboptimal - so for anything that takes a significant amount of time to run, the launch policy should be specifically set.\nFinally, by default, data will be placed in CLM until it is full; data will then be placed in ILM until it is full; finally data will go into the CLM of a remote LDOM. If child processes or threads need to access this data, you may want to place it all in ILM - and this can be done with the {{{chatr}}} command. More details can be found in [[HP System Partitions Guide|http://docs.hp.com/en/5991-1247/index.html]]\nOn Opteron AMD64 [[Platforms]] memory is either 100% ILM or 100% CLM.\n[[ccNUMABufferCacheInteraction]] varies depending on the [[Platforms]] used.
How much Cell Local Memory (CLM)?\nInterleaved memory is needed for OS, buffer cache and shared memory segments. Total the interleaved memory and round-off to the next power of two value. Allowable CLM is total memory minus ILM.\nUse parmodify to configure CLM separately on each Cell. Example:\n{{{\nparmodify –p 0 –m 0 ::::50% #allocate 50% for CLM for partition 0 and cell 0\n}}}\nReboot the system after setting CLM for all cells\nCLM can also be specified when new partitions are created with {{{parcreate}}}. \nVerify CLM using {{{parstatus}}} to display hardware partition information as well:\n{{{\nparstatus # shows everything\nparstatus –c 0 –V # shows details about cell 0\nparstatus –p 1 –V # shows details about partition 1\nparstatus –B # lists info. about all cabinets\nparstatus –I # info. about all I/O chassis\n}}}\nSample Output from parstatus:\n{{{\n[Partition]\nPartition Number : 0\nPartition Name : Partition 0\nStatus : Active \nPrimary Boot Path : 0/0/1/0/0.2.0\nHA Alternate Boot Path : 0/0/0/1/0\nPDC Revision : 2.22\nIODCH Version : ffff\nCell Architecture : Itanium(R)-based\nCPU Compatibility : BCB-0\nCPU Speed : 1500 MHz\nCore Cell : cab0,cell0\nCore Cell Choice [0] : cab0,cell0\nTotal Good Memory Size : 64.0 GB \nTotal Interleave Memory : 32.0 GB \nTotal Requested CLM : 32.0 GB \nTotal Allocated CLM : 32.0 GB \n}}}
[[Linux]] can use all available memory for BufferCache.\nIf a user process requests local memory when it is in use for BufferCache from previous processes, Linux assigns memory on another processor which results in worst-case MemoryLatency. \nOver time, given user demand for local memory, Linux frees the BufferCache and better runtimes are recovered. \nA memory clearing script can be setup to first create a file of size 80% total memory to clear all previous page cache content, then remove the file so that all associated memory is freed and have a well defined starting point to launch the MemoryLatency sensitive application:\n{{{\n# numactl --hardware # before\n# dd if=/dev/zero of=/scratch/20GB bs=1024k count=20000\n# rm –f /scratch/20GB\n# numactl --hardware #after\n}}}\nOther solutions using {{{malloc(),mmap()}}} exist as well.\n\nHP-UX on [[ccNUMA]] servers does not have this problem.\n
Glance – Powerful and Popular Tool\nTool: glance\nWhere: /opt/perf/bin/glance \nDescription:\nGlancePlus is a powerful system monitoring tool\nFeatures:\non-line and easy-to-use\navailable in character and graphical modes\nrich set of collectable metrics\nvery low resource requirements\nruns on any terminal/workstation with serial interface and slow data communication links\nGlance in Character Mode – Examples of Usage …\nglance : starting with default values\nglance –j 60 : screen refreshes every 60 sec.\nglance –p lp2 : sends screen output to printer lp2\nglance –j 7200 –p lp1 –w : prints the swap utilization every two hours on the printer lp1\nglance –nice -19 –maxpages 10 –nosort : execute glance at a higher priority, limits the max. pages by print command to 10 and do not sort processes\nglance –iterations 1000 : runs glance only 1000 times at the default refresh rate (5 sec).\nglance –adviser_only : start glance in the background with no screen output\nglance –adviser_only –syntax ./temp –j 60 > glance.out &\nwhere ./temp contains \n‘print gbl_stattime, “runq=“, gbl_run_queue’\nthis approach can be incorporated into scripts to monitor and collect metrics while your applications are running.\n\n\n\n
{{{/usr/sbin/ioscan -fnk}}} displays the hardware components of the IO subsystem.\n{{{\next_bus 3 0/1/1/1 mpt CLAIMED INTERFACE Ultra4 Wide LVD SCSI\ntarget 5 0/1/1/1.2 tgt CLAIMED DEVICE\ndisk 2 0/1/1/1.2.0 sdisk CLAIMED DEVICE HP 73.4GATLAS10K3_73_SCA /dev/dsk/c3t2d0 /dev/rdsk/c3t2d0\ntarget 6 0/1/1/1.7 tgt CLAIMED DEVICE\nctl 3 0/1/1/1.7.0 sctl CLAIMED DEVICE Initiator /dev/rscsi/c3t7d0\n}}}\nThese are all the listings for an example hardware path 0/1/1/1: \n*ext_bus: host side interface with the type of bus (LVD, FC, FWD, etc.), and version of bus (ULTRA4, FC, FC2Gb, etc.)\n*target: disk side interface \n*system attached to target: (sdisk -- could be stape for tape or other). \n**The hardware paths end numbers after the last "/" (i.e. 1.2.0) show the bus number "1" (not to be confused with the controller number assigned in the OS), then the SCSI id number "2", then the the LUN number "0". For a JBOD, there will always be only one LUN "0", for a RAID array there could be many more.\n**disk description (Seagate, Fujitsu, Maxtor). (10K RPM 73GB Maxtor Atlas drive). One may need to go to the Seagate web site to look up the model number for its speed and density, likewise for Fujitsu.\n**actual device file location.\nNotice that target "7" is also the default SCSI ID of a SCSI initiator.
sar – System Activity Reporter\nTool: sar\nWhere: /bin/sar \nDescription:\nsar samples cumulative activity counters in the operating system to report user, system and idle time waiting for I/O etc. \nFeatures:\nsimple and easy-to-use interactive tool\navailable only in character mode\nvery little overhead\nsar – Examples of Usage …\nsar [options] [-p psetid] [-o file] interval count\nsar [options] –f file (to extract data from previously recorded in ‘file’)\nwhere options are one or more of:\n-u : report cpu utilization (default)\n-b : report buffer activity\n-d : report activity for each block device\n-y : report tty device activity\n-c : report system calls\n\n-w : report system swapping and switching \n-a : report use of file access system routines\n-v : report of status of text, process, inode and file tables\n-m : report message and semaphore activities\n-p : report specified pset info. (psetid needed)\n-S : report no. of System V select() calls per sec.\n-M : report per cpu data on a multi-proc