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
