To anyone using CMS multitasking

I have several CMS utilities that do reads from multiple disks and write the
records to tape or other disks.  The utilities are about 25 years old and
use DIAG A8 to read the disk records and WRTAPE to write tape records or
DIAG A8 to write the records to disk.  I decided I should improve the
performance of the utilities by using CMS Multitasking and change the I/O to
SSCH.  I picked an easy one, read from disks and write to tape. 

 I wrote a reentrant thread to do the disk reads using SSCH and send the
records to a message queue and a reentrant thread to receive the records off
the message queue and write them to tape using SSCH.  APPLMAIN creates the
tape thread and then creates a disk thread for each disk to be read and then
waits on a semaphore until all disk threads signal complete.  When I run the
multitasking utility with one virtual CPU defined it is more than 10 times
faster than when I run the utility with two virtual CPUs defined.  My base
system has two real CPUs.  I tried using VCPUSelect to force all threads to
vm_cpu_base_only but if 2 CPUs are defined that doesn't seem to help.  Below
are some PERFSVM displays during a test with one and two virtual CPUs.

Does anyone have an idea as to what I might be doing wrong or are multiple
CPUs mainly for CPU intensive work and not I/O?

Thanks and best regards,
Rick Bourgeois

Environment;
z/VM 5.3
1GB XC virtual guest machine with one or two virtual CPUs.
Reading from 3 disks writing to virtual tape.
FLEX-ES system 120 MIPs.

Test with one CPU defined processes 3,225,962 records in 17 minutes.  The
following is a PERFSVM display during the test.

CPU Load                                           Vector Facility   Status
or
PROC TYPE %CPU  %CP %EMU %WT %SYS %SP %SIC %LOGLD  %VTOT %VEMU  REST ded.
User
P00  CP     67   36   31  33    4   0   97     67     ..    ..   ... Master

P01  CP      2    1    1  98    0   0   96      2     ..    ..   ...
Alternate
 

Total SSCH/RSCH    435/s     Page rate        .0/s     Priv. instruct.
1397/s
Virtual I/O rate     0/s     XSTORE paging    .0/s     Diagnose instr.
4882/s
Total rel. SHARE    3100     Tot. abs SHARE     0%




Test with two CPUs defined processes 3,225,962 records in ? minutes, I did a
HX after > 3 hours. The following is a PERFSVM display during two CPUs.

CPU Load                                           Vector Facility   Status
or 
PROC TYPE %CPU  %CP %EMU %WT %SYS %SP %SIC %LOGLD  %VTOT %VEMU  REST ded.
User 
P00  CP     43    7   36  57    2   0   77     43     ..    ..   ... Master

P01  CP     85    6   78  15    2   0   67     85     ..    ..   ...
Alternate 
 

Total SSCH/RSCH     61/s     Page rate        .0/s     Priv. instruct.
292/s 
Virtual I/O rate     0/s     XSTORE paging    .0/s     Diagnose instr.
392/s 
Total rel. SHARE    3100     Tot. abs SHARE     0%


These are some other interesting PERFSVM numbers when running with 2 CPUs.

Diagnose X'214'          15210    253    Diagnose X'218'              0
.0
Diagnose X'238'              0     .0    Diagnose X'23C'              0
.0
Diagnose X'240'              0     .0    Diagnose X'244'              0
.0
Diagnose X'248'              0     .0    Diagnose X'250'              0
.0
Diagnose X'254'              0     .0    Diagnose X'258'              0
.0
Diagnose X'25C'              0     .0    Diagnose X'260'              0
.0
Diagnose X'264'              0     .0    Diagnose X'268'              0
.0
Diagnose X'26C'              0     .0    Diagnose X'270'              2
.0
Diagnose X'274'              0     .0    Diagnose X'278'              0
.0
Diagnose X'27C'              0     .0    Diagnose X'280'              0
.0
Diagnose X'29C'              0     .0    Diagnose X'2A0'              0
.0
Diagnose X'2A4'              0     .0

 

EPSW  Extract PSW            0     .0    ESEA  Extr/Set Sec Auth      0
.0
IPTE  Inv. Pg Tab Entry      0     .0    ISK   Insert Stor. Key       0
.0
ISKE  Ins. Stor Key Ext      6     .1    IUCV  total instr. cnt       2
.0
IUCV  xfers fr. v. mach      2     .0    IUCV  xfers to v. mach       0
.0
IUCV  xfers virt to SNA      0     .0    IUCV  xfers SNA to virt      0
.0
IUCV unsuccessful xfers      0     .0    RSCH  Resume Subchannel   1776
29.6
SSCH  Start Subchannel       0     .0    SIO   Start I/O              0
.0
SIOF  Start I/O Fast         0     .0    TCH   Test Channel        4307
71.8

Reply via email to