Corrigenda for book

Corrigenda for Perl::PDQ book

Last updated Feb 12, 2011

Page Spotter Correction
Many  Author The keyword Perl and several other keywords are abutted without a space to the next word. This is due to last-minute, rushed editing by me where I inadvertently deleted a necessary tab in a LATEX global.
ix  P. Cañadilla § Book Structure. Line 7: "... more familiar _ performance ..." Insert with
xi  T. Wilson Last sentence of next to last para: ensure s.b. ensue
14  J. Purinton Sect. 1.4 last line: The comment about Perl5 not handling 64-bit integers refers to timestamps e.g., time_t in Time::Local, not Perl integers in general.
15  I. Tegebo Table 1.2: gettimeofday() listed twice.
"  T. Wilson Table 1.2: strftime() listed twice.
27  P. Cañadilla Fig. 1.4: Caption runs off end of page.
29  W. Baeck Second sentence after Fig. 1.6: "It would useful..." s.b. "It would be useful..."
44  Author In Fig. 1.14: "Congested local minimum" s.b. "Congested global minimum". Caption is correct.
54  P. Cañadilla Just before the fig. 2.7: "Fig 2.6 shows paging I/O ... " s.b. Fig 2.7 shows ...
56  "  "  " Between formulae (2.6) and (2.7), second line "3 visits to the disk per transaciton" s.b. transaction
"  W. Baeck Example 2.4: first line: "... pulls 20,108 tmpC". The unit s.b. tpmC
"  J. Purinton Example 2.4: Text is totally shredded. Corrected text as PDF file to preserve formatting.
"  T. Wilson Sec. 2.4.5, 1st sentence of 1st para: "processors, disks, — various types of memories" Insert and
60  D. Walter Line after eqn.(2.16) "Here, Q = 25 cars ...." s.b. 75 cars
65  T. Wilson 1st para starting "Finally..": "We also know from (2.1), that the measured arrivals is..." s.b. measured arrival count is...
66  W. Baeck Example 2.7: "50 x 0.010 = 51% busy" s.b. 50% busy
76  P. Puglia Tables: Some units are incorrect. 'pps' s.b. 'cpm', and 'ms' s.b. 'min'.
71  E. Juan Perl code comment, 6 lines up from bottom of page: # Service time s.b. # Residence time
77  P. Cañadilla Line 11 (counting the line of the formulae): "As you will see in Sect. 2.7.1, the qeueing behavior" s.b. queueing.
79  Author Eqn.(2.62): See Note 1
80  P. Cañadilla 6 lines from the bottom: "How accuate is the approximate" s.b. How accurate ...
81  Author Eqn.(2.65) First term. Denominator s.b. just (1 − ρ) without the factor m.
90  P. Altevogt End of Example 2.13 eqn. s.b. R = 230/0.7636 s − 300 s = 1.21 s
95  Author Section 2.8.7 title: Delete the `a'
" T. Wilson Ditto
100  D. Hagler Sect. 2.9.2: Queueing descriptor 'Pa/Ps/m/B/N/Q' s.b. 'Pa/Ps/m/B/N/D' to match Table 2.6.
102  E. Juan See Note 2
"  P. Cañadilla Para 3: "To make the comparison fare ..." s.b. fair
103  "  "  " Fig. 2.26 caption: " ... 2(M/M/2)" s.b. 2(M/M/1)
"  E. Juan Para 2, line 4: Fig. 2.44 call out s.b. Fig. 2.14
104  T. Wilson last para: "This another the reason for..." s.b. This is another reason...
105  "  "  " last sentence: "dow-stream" s.b. downstream
"  P. Cañadilla Fig. 2.28: Vertical label Normalized Response Time (R/S has closing paren `)' missing.
106  E. Juan Line 5 from top: "significan variance ..." s.b. significant ...
"  T. Wilson 2nd sentence: s.b. "transaction level, we will not have to be concerned"; Insert ',' and "to"
108  E. Juan Sect. 2.11.4 beginning line 2: Elide 'If'
"  T. Wilson Sec. 2.11.3 last line: "...spacing becomes boxes becomes zero..." First "becomes" s.b. between
111  E. Juan Sect. 2.11.9 para 2: "... in Table 2.6." s.b. Table 2.7
114  T. Wilson 4th line after Fig. 2.34: elide first "different"
"  P. Cañadilla 8 lines after the figure Fig. 2.34, "are known as polling systems 2.34" s.b. be see figure 2.34
115  "  "  " See suggestion in Note 3.
120  T. Wilson 5th line down: "...subsystems.s" s.b. subsystems.
121  M. Marino Below Fig. 3.3: "...can be used a parameter..." s.b. "...can be used as a parameter..."
124  T. Wilson 6th line from bottom: Insert word "be" before "coupled in series..."
129  E. Juan First line of text: "... Rv = W + S = 1.616 ms" s.b. in seconds (s) units, not milliseconds (ms).
"  M. Marino Inside boxed comment bottom of page: "...as though they it were..." s.b. "...as though it were...".
134  Author last line: "... which takes care of all that for you, ..." The word `care' is missing.
138  T. Wilson sentence before Section 3.5.2: "...the Mean Value Algorithm..." s.b. the Mean Value Analysis algorithm or simply MVA."
140  P. Altevogt Perl code 2/3 down: $X = ($n / \$rtt); The $n s.b. $N
"  Author Perl code: See Note 4
147  T. Wilson sentence above equation 3.42: "...workload must _ the same" Insert be
150  "  "  " Section 3.7.4, 1st sentence of 2nd para: "...in good agreement for the for the baseline..." Elide redundant "for the"
"  P. Cañadilla Sect. 3.7.4 Component analysis, 7th line: "Examining the multiclass projections in Fig. 3.19" s.b. Fig. 3.20
154  T. Wilson 3rd bullet, last sentence: "maybe" s.b. may be
201  P. Cañadilla Line 1: "bounding techniques of section 5.2" s.b. Sects. 5.3 and 5.4
"  "  "  " The official name is X Window System
203  "  "  " 2nd sentence from the bottom: "the this production" s.b. this production
208  "  "  " Sentence just after (5.26): "to a reference serve" s.b. server
"  "  "  " After the table 5.3, 1st line: First ref to XFS1, XFS2, NFS1 and NFS2 are in Table 5.2
217  T. Wilson numbered items bottom of page: CreatOpen s.b. CreateOpen, CreatClosed should be CreateClosed
219  Author Para 2, line 2: "This one way to get reasonable ..." s.b. "This is one way ..."
220  J. Purinton Perl code line# 19: Boolean test in if($ArrivalRate > $ServiceCap) {...} s.b. >= to match text.
225  P. Cañadilla Line 8 from bottom, "class... Either" s.b. $class
230  "  "  " Section 6.6.9 subsection Usage: $rtime = PDQ_GetResponse s.b. pdq::GetResponse
231  "  "  " Section 6.6.10 subsection Usage: \$pdq... s.b. $pdq without \
"  "  "  " Section 6.6.11 Subsection Usage: TRANS should be pdq::TRANS
233  "  "  " Section 6.6.14 Subsection Description. Line 8: "On a UNIX or Linux K platform" Elide K
"  "  "  " Section 6.6.14 Subsection Usage: \$pdq... s.b. $pdq without \
234  "  "  " Section 6.6.15 Description label appears twice. Second s.b. See Also
244  Author Perl code variable $w3 is $L3 in text but is correct in download code.
247  P. Altevogt Perl code 3 lines from bottom: Insert pdq::SetDemand("dsk", "aggwork", $aggDskDemand); before pdq::Solve(...).
253  Author Lines 1 and 7 Perl scalar PRIORITY s.b. $PRIORITY
262  P. Altevogt Eqn.(6.2) s.b. (0.0381 × 0) + (0.0857 × 1) + (0.1222 × 2) + (0.7540 × 3) = 2.592
267  T. Wilson Para 2: first sentence should have a closing paren, i.e., "...(the closed ... of Chap. 3) can be ..."
"  "  "  " Last sentence: "determine" s.b. determined
289  L. Braswell Line above eqn.(7.12): "... instr pgm ..." s.b. "instr/pgm"
306  T. Sych last line: "...usefl..." s.b. "useful"
307  P. Cañadilla Just after eqn (8.3): "from chapter 2" s.b. chapter 5
309  "  "  " 4 line of first para: "(line 9 below)" s.b. (line 8 below)
312  "  "  " Sect 8.3.2, 4 line after eqn (8.9): "(Table 8.2). The throughput" s.b. (Table 8.1)
313  T. Sych middle of second paragraph: "...thin..." s.b. "think".
315  P. Cañadilla line 8: "writing efficient applications or multiprocessors" s.b. "on"
322  "  "  " 4th line from the bottom: "Table 9.1. These rates" s.b. Table 9.2
324  Author 4th line of text after eqn.(9.2): "...then second..." s.b. "the second".
"  P. Altevogt Perl constant $K should stand for 1000, not 1024 (same on p.327).
325  P. Cañadilla Line 2: "CD_Request to the web sever" s.b. server
341  "  "  " § 10.1 Line 8: "we analyze the performance _ a web" Insert of
"  " " "  Sect 10.1 Intro, last sentence: "load-dependent servers presented in Chaps. 2 and 6" s.b. Chaps. 3 and 6
343  "  "  " Line 8 from the bottom: "minimum segement size (MMS)" s.b. segment
344  T. Wilson 6 lines from end of page: "One the server side..." s.b. "On the server side,..."
345  P. Altevogt Eqn.(10.1) s.b: RTD = (77.69 + 70.282)/2 = 73.99 ms
"  Author  Eqn.(10.2) is correct but seems to be a bit off numerically. s.b. BW = 143417.37 B/s. See note 5
"  P. Cañadilla Items 1 and 4 in enumerated list after the eqn. (10.3). See note 5
346  T. Wilson First sentence of last para: "...a finite of server processes" s.b. "a finite number of ..."
350  "  "  " Sentence prior to start of last para: Elide `that' s.b. "Since the demon is the bottleneck..."
"  P. Cañadilla last line: "discssed in Chap. 5" s.b. discussed
352  T. Wilson First line: the comma after "1,000 B" should be elided.
359  "  "  " 3rd sentence from bottom: "The utilizations was..." s.b. "The utilizations were..."
362  Author Perl code: Dummy node variable not used. Service times for nodes 2 and 3 s.b. same as Table 10.8.
365  Author Perl code: See Note 6
368  P. Cañadilla Reconcile precision of Dws data points in Fig. 10.23 with Table 10.8.
374  "  "  " Bandwith. "see also Latency" Latency entry missing.
"  "  "  " BCMP: "... has a product form solution. (See Chap 2.)". s.b. Chapter 3.
"  "  "  " Benchmarks. Standard: "are representative of certain classes _ relatively..." insert of.
"  "  "  " Benchmarks. Custom: "a specific customer workloads ..." s.b workload
376  "  "  " CGI. "The a program" s.b. A program
"  "  "  " CMOS. "Compare with NMOS" s.b. NMOS entry missing.
377  "  "  " IP. RFC 781. s.b RFC 791.
"  "  "  ""JMX (...) A java-basd technology" s.b. java-based
378  "  "  "LCFS-PR: "One of the permitted ... See Chap 2." s.b. Chap 3.
"  "  "  "MIPS. "See also ETR and ITR." Both entries missing.
379  "  "  "Model. Computer Model. "See ... Simulation, Back of the envelope" Both entries missing.
"  "  "  "OLTP. "Compare with DSS and OLAP" OLAP missing.
380  "  "  "Open Group. "... whose purpose is to define the to provide open systems ..." the s.b. and
381  "  "  "RSS. Line 2, "... the UNIXtool called top" s.b UNIX tool
382  "  "  "SAR. "... System V UNIXsystems" s.b. UNIX systems
383  "  "  "URC. "... pairs to describe a web files" s.b. web file
"  "  "  "Z/OS. "See Z/OS" s.b. See MVS
386  Author 1945 probably s.b. 1946. See Note 7; which is really an addendum, not an erratum.
"  E. Borasky 1953 See Note 7
"  D. Walter 1961 "John Little ...bares..." s.b. bears
394  E. Juan Sect. C.3 2nd last line: "1.35914" s.b. 0.18394 (consistent with Fig. C.1)
403  P. Altevogt Tables D.2 and D.3 entries corrected in Note 8
409  P. Cañadilla Appendix E: Service time at server. The subscript k should be included in the formulae.
411  P. Cañadilla Table F1, erlang.pl 84, s.b. 85
"  "  "  " Table F1, getload.pl, "using UNIXuptime command" s.b. UNIX uptime
"  "  "  " Table F1, mvaaproxsub.pl, 139, s.b.140
412  "  "  " Section F.3, line 4: "UNIXor Linuxplatforms" s.b. UNIX or Linux platforms
416  Author Table G.3, first row: "8 b" Decimal unit s.b. "1 b".
417  T. Becker Solution 1.2: Last line "LAN" s.b. WAN
418  E. Juan Solution 3.1: 'p' and 'q' are switched.

NOTES

  1. Page 79
    Equation (2.62) should read:
    φ(m, ρ)     =      1 − ρ

    1 − ρm
        =      1

    1 + ρ+ ρ2 + ... ρm−1


  2. Page 102
    In items just prior to Section 2.10.1, the Figure and Equation callouts are messed up. They should read:
    1. An M/M/1 queue ...(Fig. 2.24) ... (2.35) ...

    2. An M/M/2 queue ...(Fig. 2.16) ... (2.63) ...

    3. A multiqueue (Fig. 2.14) ... (2.44) ...



  3. Page 115
    Cite M/M/1//N →  machine repairman model on pp. 88, 238, 412, as forward reference to Amdahl's law in Chap. 6 of GCaP book.
    Similarly, add and cite M/G/1//N →  load-dependent repairman as forward reference to USL in Chap. 6 of GCaP book.

  4. Page 140
    MVA Approximation. The independent Perl subroutine on p. 140 is hosed. The following code works correctly and will be included with the next PDQ release, in the Perl subdirectory (not the PDQ subdirectory). [NOTE: Since these subroutines are not used by PDQ, the APPROX solution method for pdq::Solve() works as advertized.]
    sub approx
    {
       # Schweitzer algorithm
       for ($k = 1; $k <= $K; $k++) {
          $Q[$k] = $N / $K; # equi-partition queues initially
       }
    
       do {
          for ($k = 1; $k <= $K; $k++) {
             $Qprev[$k] = $Q[$k];
             $R[$k] = $D[$k] * (1.0 + $Q[$k] * ($N - 1) / $N);
          }
          
          $rtt = $Z;
          for ($k = 1; $k <= $K; $k++) {
             $rtt += $R[$k];
          }
          $X = $N / $rtt;
    
          for ($k = 1; $k <= $K; $k++) {
             $Q[$k] = $X * $R[$k];
          }
       }  while (converging())
    }
    
    sub converging {
        my $k, $threshold = 0.001; # stopping criterion
       
        # Equivalent of Max_i[|(Qnew_i - Qold_i)/Qnew_i|] pseudo-code 
        # seen in various textbooks
        for ($k = 1; $k <= $K; $k++) {
            $delta = abs($Q[$k] - $Qprev[$k]) / $Q[$k];
            return(1) if($delta > $threshold);
        }
        
        return(0); # must've converged below threshold
    }
    
    


  5. Page 345
    Recalculated numbers using R:
    From equation (10.2):
       BW = 512/3.57e-3                   =  143417.37 B/s
    From Table 10.1:
    1. Tsend  (536 * 2 + 74)/BW           =       7.99 ms
    2. RTT from eqn.(10.1)                =      73.99 ms
    3. Tserv from eqn.(10.3)              =      26.13 ms
    4. Trecv (512 * 3 + 316 + 1 + 1)/BW   =      12.93 ms
    Performance improvement:
       Old total response time            =     599.04 ms
       New total response time            =     121.04 ms
       Percentage change                  =      79.79 %
    
    


  6. Page 365
    Dummy Queues. Chapter 10, code fragment at bottom of p. 365 should read:
        use constant MAXDUMMIES => 12;
        ...
        $think    = 0.0 * 1e-3;  # free parameter
        $dtime    = 2.2 * 1e-3;  # dummy service time 
        ...
        # Create dummy nodes with their service times ... 
        for ($i = 0; $i < MAXDUMMIES; $i++) {
            $dnode = "Dummy" . ($i < 10 ? "0$i" : "$i"); # 2-digit number
            $pdq::nodes = pdq::CreateNode($dnode, $pdq::CEN, $pdq::FCFS);
            pdq::SetDemand($dnode, $work, $dtime);
        }
    
    


  7. Page 386
    Presper Eckert was interviewed in 1989 about the development of the ENIAC computer. The interview was published in ComputerWorld on the occassion of the ENIAC's 60-th birthday. He has the following to say about von Neumann's contribution:
    He (von Neumann) came and looked at our stuff and went back to Princeton and wrote a long document about the principles. He gets a lot of credit but the inventions were ours. Someday I'll write a book on who really invented the computer. It wasn't Atanasoff or Von Neumann. We did it.
    It looks to me like Eckert and Mauchly (being engineers) did not fully appreciate what von Neumann did, and vice versa.
    > Comments: On page 386 you state:
    > 
    > "The IBM 701 was designed exclusively for business data processing. It was a
    > vacuum tube computer programmed with punch cards."
    > 
    > My recollection is that there were two IBM computer lines, the 701 - 704 - 709
    > - 7090 - 7094 line of *scientific* computers, and the 702 - 705 - 7080 line of
    > *commercial* computers. The scientific line had a 36 bit binary word-addressed
    > architecture and the commercial line had a character-based architecture. I
    > don't know a whole lot about the commercial line, but I did earn a living
    > programming 7094s early in my career.
    > 
    > All were true Von Neumann machines, with programs and data stored in the same
    > random access memory. They were not "programmed with punch cards" but did have
    > card readers. The 701 and 702 had Williams tube (CRT-based) RAM, IIRC, and
    > succeeding members of the lines had magnetic core RAM. The 7080 and 7090 and
    > later had solid-state logic; predecessors had vacuum tube logic.
    
    


  8. Page 403 Tables. Incorrect values for Fn caused by the old Excel gotcha of cell coordinates auto-incrementing in a copy/paste operation.
    Table 1: Corrected Table D.2
    n Data Ranked Emp Thy Fn Fn−1 D+ D
    1 11.72 1.43 0.1220 0.1797 0.1667 0.0000 -0.0130 0.1797
    2 10.43 4.12 0.3515 0.4348 0.3333 0.1667 -0.1015 0.2682
    3 8.02 7.58 0.6468 0.6500 0.5000 0.3333 -0.1500 0.3167
    4 7.58 8.02 0.6843 0.6707 0.6667 0.5000 -0.0040 0.1707
    5 1.43 10.43 0.8899 0.7642 0.8333 0.6667 0.0692 0.0975
    6 4.12 11.72 1.0000 0.8027 1.0000 0.8333 0.1973 -0.0306
    Table 2: Corrected Table D.3
    N 6
    Dmax 0.3167
    Kcrit 0.7757
    p-value 0.7632
    α 0.2368





File translated from TEX by TTH, version 3.38.
On 12 Feb 2011, 09:21.