Errata

System Performance Tuning

Errata for System Performance Tuning, Second Edition

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed
Page 5
1st paragraph, 1st full sentence

Parenthesis after the period has an intervening newline:

other variables.
) It is possible

I suppose it's technically not invalid, and I can't find any reference that says it is, but it looks horrible and I think most would agree it should be avoided, possibly with explicit rules in the print processor.

tcordes  Mar 31, 2015 
Printed
Page 6
3rd paragraph

The text reads:

"... we are limited to 64 (2^8) addresses in memory."

It should be 256 instead of 64, as 2^8 = 256.

And some lines below:

"... is about 16 petabytes (16777216 GB)"

2^64 bytes = 16 exabytes = 16384 petabytes = 16777216 terabytes

Note from the Author or Editor:
1. Please correct to "...we are limited to 256 (2^8) addresses..."
2. Please correct to "...16 exabytes (16777216 TB)"

Anonymous   
Printed
Page 9
7th line

messages a hour
should be:
messages per hour

Anonymous   
Printed
Page 22
"A brief note" box, 3rd bullet point

"An payload-free packet"
should be:
"A payload-free packet"

tcordes  Mar 31, 2015 
Printed
Page 32
middle 1st paragraph,

It says "It's probably safe to assume that a 5-MIPS CPU will outperform a 100 MIPS
CPU, ...".
Clearly it had to be a 100 MIPS CPU outperforming a 5 MIPS CPU.

Anonymous   
Printed
Page 38
last text paragraph, 1st sentence

"illustrated in Table 2-4"
should be:
"illustrated in Table 2-5"
as it is 2-5 that shows the class distribution, whilst 2-4 shows the transaction type distribution.

tcordes  Mar 31, 2015 
Printed
Page 41
1st paragraph, 3rd last sentence

"If automobile performance followed the same growth curve as microprocessors over the last 20 years, the successor to the DeLorean DMC-12 (1981-1983), which had a top speed of perhaps 140 miles per hour, would have doubled 12 times..."

Rewording required: the predicate "would have doubled 12 times" does not match the subject "the successor to the DeLorean DMC-12". The above boils down to: "the successor to the DeLorean DMC-12 would have doubled 12 times." Doubled what? Of course the context makes it clear the answer to that is "speed", but taken alone the sentence hints at other things, like weight, or size. Simply inserting "in speed" after "doubled" would suffice.

tcordes  Mar 31, 2015 
Printed
Page 52
Figure 3-4

Figure description text says "as a function ot L1 cache hit rate", but in-figure legend X-axis says "L2 cache hit rate". Both should be the same level, L1 or L2, I'm guessing.

Note from the Author or Editor:
Correct Figure 3-4 descriptive text to read "as a function of L2 cache hit rate."

tcordes  Mar 31, 2015 
Printed
Page 56
4

The fourth paragraph states that "The next four sections look at different process
scheduling models". However, there are only two sections covering process scheduling
models ("The System V Model: The Linux Model"; and "Multilayered Scheduling Classes:
The Solaris Model") before getting into "Multiprocessing".

Anonymous   
Printed
Page 57
2nd last text paragraph, 3rd sentence

The value range is wrong: the range is +19 to -20, not +20 to -20.

tcordes  Mar 31, 2015 
Printed
Page 58
first line

"Let's decrease the priority of this process to -20."

Negative "niceness" INCREASES the priority of the process.

Also, the output doesn't match the command:

"renice -20 5620
5620: old priority 0, new priority 20"

should be:
"renice 20 5620
5620: old priority 0, new priority 20"
or
"renice -20 5620
5620: old priority 0, new priority -20"

Finally, why is the niceness "19" after attempting to change it to "-20"?

Note from the Author or Editor:
This confusion is occurring because the priority numerical values move inversely of the priority itself – that is, a higher priority task has a lower priority numerical value.

For clarity, make the following edits:
- First sentence, "Let's decrease the priority of this process by increasing its priority value to 20"
- First code sample, first line:
% renice 20 5620
- Third para, "In order to increase the process's priority..."

Anonymous   
Printed
Page 64
Last line of the table in "Example 3-3. Creating a priority fence in the

timesharing class";
To truly "fence in" a process at priority 59, shouldn't the value of ts_tqexp for
priority 59 be 59?

In the example, the value of priority 59's ts_tqexp is 49 and, therefore, when a
process at priority 59 uses its entire time quantum it will then be assigned priority
49 and will never migrate to priority 59 again.

Note from the Author or Editor:
Please adjust the ts_tqexp value for the last row in example 3.3 to be 59 and boldfaced.

Anonymous   
Printed
Page 70
2nd paragraph, last sentence

"There are point-to-point connections between data path and devices connected to it"

almost certainly needs a "the" before "data path", or some other rewording.

Note from the Author or Editor:
Correct to read "...between the data path and all connected devices, which simplifies the arbitration logic."

tcordes  Mar 31, 2015 
Printed
Page 73
3rd and 4th paragraph

Paragraph 4 does not follow from paragraph 3, it's a non sequitur. Paragraph 3 explains nothing more than the "problem" caused by cache coherency requirements causing a lot of bus traffic. Then paragraph 4 immediately states that larger caches are better, with no explanation as to how that fits into the previous point about cache coherency. If anything, paragraph 3 implies the opposite of paragraph 4: that is, that larger caches would cause a performance decrease due to coherency issues. Perhaps this small section would work much better if paragraph 4 were just deleted; otherwise one must explain why larger caches are better: even in the face of coherency-induced bus traffic and concomitant cache line invalidations.

Note from the Author or Editor:
Deleting paragraph 4 is the cleanest way to make this clear.

tcordes  Apr 01, 2015 
Printed
Page 84
middle of page, 3rd bullet point

"spins on mutexes; (in practical ... the first try)."

Semicolon before parentheses followed by period. Semicolon should be removed to follow English grammar/punctuation rules (the sentence should stand on its own with the entire parenthesized text removed, leaving ";." together, which obviously is incorrect).

tcordes  Apr 04, 2015 
Printed
Page 99
Footnote

Sun Ultra Enterprise systems don't appear to be able to run with six-way interleaves.

Note from the Author or Editor:
This footnote can be safely removed.

Anonymous   
Printed
Page 100
2nd paragraph, last sentence

"The virtual memory system is responsible for managing the associations between the used portions of this virtual address space into physical memory".

"Between" requires two subjects: it's relational. Sounds like an edit error, and was probably originally the correct: "managing the mapping of the used portions". To keep the word "between", you could change "into" to "and".

tcordes  Apr 04, 2015 
Printed
Page 105
1st bullet point after 1st paragraph

"Increasing this value causes the page scanner to run less unnecessary jobs, but do more work."

Is very vague, poorly worded, and even sounds wrong. "Jobs" of what? "Work" in what way? How can running "less unnecessary jobs" ever equal "more work"? From Sun documentation, it is clear that increasing slowscan (closer to that of fastscan, which is always a higher value) causes the scanning of memory to occur more often. How does that translate into "less unecessary jobs"? Confused.

Note from the Author or Editor:
Change text to read:
"This delay is bounded by two parameters: slowscan, which is the minimum scan rate, and fastscan, which is the maximum. As the size of the free list decreases towards minfree, the scan rate will increase linearly, and eventually reach fastscan at minfree."

tcordes  Apr 04, 2015 
PDF
Page 107
table 4-1, entries for lotsfree, desfree, freepages.low

Two related problems:

1. lotsfree and desfree reference "freemem/high" and "freemem/low" respectively: the nomenclature is incorrect; the correct names are freepages.high and freepages.low as shown both later in the table and in the preceding text.

2. desfree says it's "roughly equivalent" to (corrected as per above) freepages.low, but freepages.low's entry says it's equivalent to minfree (not desfree). The minfree entry says "there is no equivalent parameter under Linux". The Solaris entry equivalencies need to jive with the Linux ones in a better manner. (Admittedly there is no perfect mapping; my best guess is minfree is roughly freepages.low, and desfree has no equivalent.)

Note from the Author or Editor:
1. Please correct #1 as per the reported errata.
2. freepages.low should be considered equivalent to desfree.

tcordes  Apr 09, 2015 
Printed
Page 108
Last paragraph on the page

The author indicates that TLB stands for 'transaction lookaside buffer', however, as
I remember from my computer architecture class, and as a search on Google (search
terms 'TLB lookaside buffer') confirms, it actually stands for 'translation lookaside
buffer' instead.

AUTHOR: Valid.

Anonymous   
Printed
Page 110
top sentence: tyPing a command

Anonymous   
Printed
Page 111
Paragraph 6

The command output lists the following:

swapfile dev swaplo blocks free
... ... ... 788384 ...

Paragraph 6 refers to the number of blocks as "688384" instead of "788384."

Anonymous   
PDF
Page 112
1st paragraph, last sentence

"This minimizes the seek time to the disk"

Awkward wording. You don't really seek "to the disk". If by "disk" you mean a specific bit of rust (a sector, say) then it works: "This minimizes the seek time to the sector." But that doesn't make much sense given the context. I would guess it should have been "of the disk" (if "seek time" is meant to be the aggregate/plural), but it still might need the qualifier "average" before "seek time". Perhaps a complete revamp of the sentence would produce better results.

Note from the Author or Editor:
"This minimizes the seek time to the disk" should be replaced with "This minimizes seek time."

tcordes  Apr 09, 2015 
PDF
Page 114
1st paragraph, last sentence

"Data ... is periodically written to data by fsflush..."

The 2nd "data" should probably be "disk".

tcordes  Apr 09, 2015 
Printed
Page 115
1st code example, 3rd-last line (and 2 last lines)

Three problems:

1. The 3rd-last line's newline sequence \n does not match that of the 2 following lines: \n\r; they should all match.

2. Convention is to use \r\n (if using DOS/Windows format), \n\r isn't really used anywhere, even though it works just fine (even on UNIX).

3. In UNIX (and Linux as this example is for) the convention is to use just \n, so all perl code examples should be just \n. In fact, in the 2nd code example on the same page, you correctly use just \n. (There is no portability concern regarding DOS/Windows since this code relies on /proc/sys/vm/bdflush which will not exist on Windows.)

Note from the Author or Editor:
Please correct all newlines in this code sample to simply be "\n".

tcordes  Apr 09, 2015 
Printed
Page 115
last code example, line 2 and last line

Newlines have been inserted (probably an automated book formatting problem) on these lines in the middle of variable tokens:

$u
nsed,

$
nfact_sync

If typed in as shown, they will result in a faulty program.

Note from the Author or Editor:
This is definitely difficult to read! Lines 2-3 and 5-6 in the text need to be on the same line if copied and pasted.

tcordes  Apr 09, 2015 
PDF
Page 123
table 4-3, last entry

"freeswap" is in a bold and proportional font, unlike all the other text in the same column.

tcordes  Apr 09, 2015 
Printed
Page 126
1st perl code example

Same problem as with the perl code errata note I made for page 115. The \n\r should be just \n. Same argument applies.

Note from the Author or Editor:
Please correct all newlines in this code sample to simply be "\n".

tcordes  Apr 09, 2015 
PDF
Page 129
last paragraph, sentences 2 and 3

Sentence 3 is saying the exact same thing as sentence 2, but with better wording. Sentence 2 is a bit confusing, the semicolon implies you will describe why they may not be sequential, but after the semicolon you describe why they are. It never is explained why they may not be. If you put a "but" right after the semicolon it may make be clearer. Or delete all of sentence 2 and leave just sentence 3. Or get rid of the text after the semicolon and use that space to explain why they might not be sequential.

Note from the Author or Editor:
Delete sentence 2 for clarity.

tcordes  Apr 09, 2015 
PDF
Page 132
bullet point 2 after 3rd paragraph

9,100 million bytes is 8.475GB in base-2, not 8.67GB as printed. (It is 8678MB, so one extra base-2 math step was missed. That means the "lost-to-the-marketing-math" effect is even worse than you show!)

tcordes  Apr 09, 2015 
PDF
Page 136
1st bullet point after 3rd paragraph

"and the requesting data is in the drive's buffer"
should be:
"and the requested data is in the drive's buffer"

tcordes  Apr 09, 2015 
Printed
Page 137
table 5-2, 3rd-last line of table on this page

Blank line in columns 2+ for no reason, between the line for mode 0 and mode 1 (DMA multi-word). That doesn't match other "Type" sections in the same table. It seems an artifact of the extra spacing required in the "DMA single-word" section. Instead, the 1 in the mode column should be immediately to the right of the "(multi-word)" text in the type column, on the same line.

tcordes  Apr 09, 2015 
Printed
Page 138
table 5-2 (continued), the lines for modes 2,4 and 5

Spurious table line wrapping/newlines before the "UDMA/XX" qualifier. Almost certainly the UDMA/XX text was meant to be to the right of the "ATA-X" text, on the same line, and was accidentally wrapped. If it was meant to / had to be wrapped, then it should be wrapped into the "Supported in" column, like was done in the "DMA (single-word) section in the same table, previous page. As it stands, it makes it appear that "UDMA/33" is matched with Mode 3, which is incorrect (and so forth for UDMA/66 and /100).

Note from the Author or Editor:
Wrap all the UDMA/XX text upwards; that is, place the "UDMA/33" text next to the preceding "2".

tcordes  Apr 09, 2015 
PDF
Page 138
text between table 5-2 and 5-3

"provides a summary of the IDE implementations and the features it supports."

Subject is plural, so "it supports" must be changed to "each supports" or "they support", or similar wording.

tcordes  Apr 09, 2015 
Printed
Page 143
1st paragraph, 3rd sentence

"target" should be "device" or "initiator". Targets don't initiate requests in the SCSI spec, or, more precisely, the initiator of a request is always called the initiator, not the target.

Note from the Author or Editor:
Replace "target" with "initiator."

tcordes  Apr 09, 2015 
PDF
Page 144
1st paragraph, 1st sentence

"... the negotiated synchronous transfer speed to the device was configured as target 0; attached to this controller, it is 0x00002710 KB/second."

Nonsense as written. The speed can't be "target 0". Perhaps it was edited incorrectly. How about:

"... the negotiated synchronous transfer speed to the device (configured as target 0 on this controller) is 0x00002710 KB/second."

tcordes  Apr 09, 2015 
Printed
Page 148
table 5-4, body, line 2

"fibre" is not capitalized. All the other type names in the table are (and "fibre" is certainly its own type as there is no such thing as "Copper fibre").

tcordes  Apr 09, 2015 
PDF
Page 152
5th paragraph, last line

"the sevice times" -> "the service times"

tcordes  Apr 09, 2015 
Printed
Page 154
3rd paragraph, 3rd paragraph

"a sequential reads the extent, then all of the data."
should probably be:
"a sequential read reads the extent, then all of the data."

(Probably an automated double-word editing program gone amok.)

tcordes  Apr 09, 2015 
PDF
Page 154
last paragraph, 1st sentence

"...are stored, etc.) Systems V systems..."
should be:
"...are stored, etc.). Systems V systems..."
or with "new, open" rules:
"...are stored, etc). Systems V systems..."

In any case, a period after the parenthesis is mandatory. Probably another amok automated editor looking for double-periods, since the author has not yet (as of p181) made this mistake elsewhere.

tcordes  Apr 09, 2015 
Printed
Page 155
1st (partial) paragraph

"underlying filesystem time" -> "underlying filesystem type"

tcordes  Apr 09, 2015 
Printed
Page 156
2nd paragraph

The equation for the size of the DNLC on p. 56 has two problems.

First, the "equation" given is incomplete (missing a "(" ).

Second, it is stated to be the "default size" but doesn't match the default given in
Table 2-1.

Table 2-1 (p. 28)
ncsize (size of DNLC) = 4 x (max_nprocs + maxusers) + 320

p. 56:
default size [of the DNLC] for a given system is determined by maxusers x 17) + 90

Note from the Author or Editor:
1. Please change the 'ncsize' entries in Table 2.1 to read:
For Solaris 2.5.1 and earlier: ncsize = 17 * maxusers + 90
For Solaris 2.6 and later: ncsize = 4 * (max_nprocs + maxusers) + 320

2. Please fix the referenced text on page 156 to strike the equation sentence entirely, so it reads "...for the maxusers parameter. (We discuss parameters..."

Anonymous   
Printed
Page 156
1st paragraph, 1st (partial) and 2nd sentence

From sentence 1 (along with paragraph 5 sentence 1), it sounds like the DNLC operates at the vnode level. But sentence 2 says "the DNLC figures out the right inode from the filename given". Is that technically valid, and if so, could some explanation be added as to the interplay between inode/vnode in the DNLC? If it is simply a typo, change the text from "inode" to "vnode".

Note from the Author or Editor:
"figures out the right inode" should read "figures out the right vnode"

tcordes  Apr 09, 2015 
Printed
Page 157
table 5-7

The table body shows the inode density in bytes (i.e., 2,048) but the header says it's in KB. The text above the table makes it clear 2KB is the correct for the smallest fs size (i.e., a "2" in the 2nd column).

Note from the Author or Editor:
Change table 5-7 column 2 header text from "KB per inode" to "bytes per inode."

tcordes  Apr 09, 2015 
Printed
Page 165
4th paragraph

states "the ext3 filesystem has writes scheduled every 5 seconds as opposed to the
30-second delay associates with ext3" - one of those "ext3" mentions should be ext2.

AUTHOR: Valid: second "ext3" should be an "ext2."

Anonymous   
Printed
Page 176
2nd footnote

"on the disk with ID 5 (d5)"
should be:
"on the disk with ID 5 (t5)"

tcordes  Apr 09, 2015 
Printed
Page 179
1st paragraph, 1st full sentence

"given by read/s, write/s, ..."

But the sar -d example on preceding page shows that sar -d gives only a combined "r+w/s" column. The text should match the sample output.

Note from the Author or Editor:
Amend the sentence to read: "The number of reads and writes is given by r+w/s, and the number of bytes transferred (in 512-byte units) is given by blks/s."

tcordes  Apr 09, 2015 
Printed
Page 179
4th paragraph, 1st sentence

"... enabling the facility in production kernels wasn't generally done because it provided only a small performance overhead. IBM decided to leave the kernel tracing facility enabled..."

The "because" clause does not support the prior premise; indeed, it supports the following sentence instead. Perhaps an editing mistake? Changing the location of the period and changing "provided" to "required" is all that is required to fix it:

"... enabling the facility in production kernels wasn't generally done. Because it required only a small performance overhead, IBM decided to leave the kernel tracing facility enabled..."

Note from the Author or Editor:
Replace "because it provided only" with "because it imposed only"

tcordes  Apr 09, 2015 
Printed
Page 181
2nd paragraph

First sentence: "from binary to hexadecimal." should read "from decimal to
hexadecimal"

For example 524569 decimal is 80119 hex.

Note from the Author or Editor:
Description of error is correct.

Anonymous   
Printed
Page 181
2nd paragraph, 1st sentence

In addition to the prior errata regarding changing "binary" to "decimal", this entire sentence seems out of place. At that point we are still discussing Example 5-3, not Table 5-11. Example 5-3 has the flags field in decimal, so no such note is required.

If the sentence is meant to discuss Table 5-11 then it should be moved after the last sentence in the same paragraph (after 5-11 is introduced), or as the first sentence after Table 5-11.

Where it really makes the most sense is on page 182 directly after Table 5-12, as that is where you manually convert the decimal that Example 5-3 provides into hex. This make more sense than after Table 5-11 because you have shown in the book both the decimal output from tnfdump and the hex in the Table 5-12, whereas with Table 5-11 you have not shown in the book the source from "buf.h" illustrating the prior numeric base.

Note from the Author or Editor:
Relocate the sentence in question to the start of the first paragraph on page 182.

tcordes  Apr 09, 2015 
Printed
Page 182
table 5-12, last line

26.102 should be 26.101, to match example 5-3 from which it is taken. In the text paragraph below the table, the 9.074ms result is correct, as it is based on 26.101, not 26.102.

tcordes  Apr 10, 2015 
Printed
Page 188
1st full paragaph (excluding the aside), 2nd sentence

Very awkward wording:
"... given that there are limitations for no operating system, SCSI host adapters, ..."

Maybe move the word "no" to before "limitations".

tcordes  Apr 22, 2015 
Printed
Page 188
"paw prints" paragraph at top of page, 3rd sentence

For RAID 0 it says "each disk's utilization decreases by about 1/N". I'm confused on this point. It's also made on page 190 2nd-last paragraph, last sentence, about RAID 1: "disk utilization for an N-way mirror is reduced by 1/N." In both cases it is referring to random access (reads+writes for RAID 0 but reads-only for RAID 1).

I assume you mean an individual disk's utilization, not overall array disk utilization. I also assume you mean I/O utilization (not capacity, which isn't really being discussed around the text in question). In both cases, wouldn't an individual disk's utilization be reduced *to* 1/N, not *by* 1/N? If it reduced by 1/N that would mean as you increase disks to the array you increase each member disks' utilization (and lose performance, as per last sentence in the paw prints paragraph). That makes no sense to me. So perhaps the word "by" in both cases needs to be replaced by the word "to"? And perhaps "utilization" needs to be better defined?

Note from the Author or Editor:
"each disk’s utilization decreases by" should be replaced with "each disk's share of the workload decreases to"

tcordes  Apr 22, 2015 
Printed
Page 193
2nd paragraph, last sentence

First, the end of the sentence should read "two data disks", not "disk".

Second, isn't this whole sentence wrong? Doesn't it apply to writes, not reads? This whole paragraph is about reads; the subsequent one is about writes. As per other statements in the book, most RAID implementations don't check parity on non-degraded reads. That would mean a small read across two disks would involve "activating [two] disks" not three. Perhaps this sentence was supposed to be in one of the "write" paragraphs?

Note from the Author or Editor:
Strike the entire sentence for clarity.

tcordes  Apr 22, 2015 
PDF
Page 193
bullet point at end of page, last sentence and equation

First, the words "single stripe" are a bit confusing/ambiguous. If my reading of it is correct, perhaps the words "RAID 0 stripe" would be clearer.

Second, the equation gives a number (performance proportional to RAID 0) that gets smaller as n (number of disks) increases. Isn't that the opposite of what you'd expect? Perhaps the wording should instead say "performance degradation"? If left as worded, shouldn't the equation just be (n-1)/n? That would give the result of a 10-disk RAID 5 array giving 90% the whole-stripe write performance compared to a 10-disk RAID 0 array (and not 10% as the equation stands).

Note from the Author or Editor:
1. Replace "single stripe" with "single disk"
2. This equation should just be (n - 1), because we are referring to a single disk as our standard of comparison.

tcordes  Apr 22, 2015 
PDF
Page 194
2nd-last paragraph, 2nd-last sentence

I can't see how "2 (n-1)/n reads" is arrived at for degraded reads of "a single disk", nor the "n reads" for non-degraded reads. As per earlier in the paragraph, wouldn't a non-degraded single disk read (i.e., a tiny read that doesn't span disks in the stripe) be just 1 read? And degraded would be simply n-1? As it stands, the former equation gives 1.33 "reads" for n=3, which doesn't even make sense (must be a whole number?).

Note from the Author or Editor:
Here, the language is unclear and the equations misleadingly incorrect. This sentence should read: "When a RAID 5 array is running in a degraded state, a read operation to the failed device will incur (n - 1) individual disk reads, rather than just one."

tcordes  Apr 22, 2015 
Printed
Page 195
Figure 6-4, 6-5 and 6-6

The pictures in the figures do not match their title below. Figure 6-4's picture is not RAID 1+0, but RAID 0+1, etc. I do believe that if you simply toggle each of the 3 pictures to the opposite picture, without making any other changes, then everything makes sense (including references in the text paragraphs).

Also, 2 of the 3 figures are identical, and hence you can eliminate one and simply modify the references to it the text.

Note from the Author or Editor:
1. Eliminate the sentence "Figure 6-4 shows RAID 1+0 organization." from the end of the last paragraph on page 194.
2. Reverse the illustrations between Figures 6-5 and 6-6.

tcordes  Apr 22, 2015 
Printed
Page 205
last paragraph, 2nd sentence

"which is not good if you intended to boot from disk."

Perhaps the sentence ending should read "... from the RAID array".

tcordes  Apr 22, 2015 
Printed
Page 206
Table 6-5, RAID 5 entry

"is written from a RAID 4 array", the array type should be 5, not 4.

tcordes  Apr 22, 2015 
Printed
Page 211
4th paragraph, 2nd sentence

"RAID-5" is used here, but everywhere else in the book RAID levels are referenced without the dash, like "RAID 5". For consistency, this instance should be also.

tcordes  Apr 22, 2015 
Printed
Page 215
1st paragraph, 4th setence

"This set of rules is called a media access control, or MAC."
shouldn't this be:
"This set of rules is called a media access control, or MAC, protocol."

"Media access control" is almost always used as an adjective, not a noun. You could possibly use the original sentence if you drop the word "a", though I'm not really sure MAC is a "set of rules", as it really is the (MAC) protocol that defines the rules, not the MAC itself.

tcordes  Apr 22, 2015 
PDF
Page 219
last paragraph, 1st sentence

"This type of propagation..."

The "this" has not been defined, and is ambiguous. It is many sentences ago that the two types of propagation were mentioned, and both were mentioned equally fleetingly, so it is very unclear (at this point) what "this type" is. Perhaps "this" should be changed to "one".

Note from the Author or Editor:
Replace "This type of propagation" with "Another type of propagation"

tcordes  Apr 22, 2015 
Printed
Page 230
2nd-last text paragraph, 1st sentence

The text says "show port card/number" but the command example below says "show port status 2/6". The text should include the word "status" to match the example. That would make it consistent with the text and example of "set port speed card/number" in the subsequent paragraph.

tcordes  Apr 22, 2015 
Printed
Page 231
First command example at top of page

The command says port "4/3" but the sample output says port "2/1", they should both be "4/3" like the example immediately prior on the previous page.

tcordes  Apr 22, 2015 
Printed
Page 231
2nd command example, 2nd line

The "interface interface" line is confusing as both words are in the same typeface. This is a bit against convention used in the rest of the book, where you normally use a sample interface name. As per the book conventions as outlined on page xii, that typeface should only be used for "commands typed verbatim". A similar problem exists for the speed and duplex lines but in this case it is a bit clearer since most readers understand | to mean "or".

Note from the Author or Editor:
Please italicize the second "interface," "10|100|auto", and "half|full|auto."

tcordes  Apr 22, 2015 
Printed
Page 243
4rd paragraph

the book reads:
"When the first packet in a TCP connection is sent from the server ..."
It should be:
"When the first packet in a TCP connection is sent to the server ..."

i.e. change "from" to "to"

Anonymous   
Printed
Page 245
2nd-last paragraph, 5th sentence

"If there is an insufficient amount of data, the application will be put to sleep."

Shouldn't the word "data" be "free socket buffer space"? If it really was "data", why would you put the application to sleep, from whence it cannot produce further data? If that were the case, wouldn't a packet never get sent?

Note from the Author or Editor:
"Data" should be replaced here with "free space in the socket buffer"

tcordes  Apr 22, 2015 
Printed
Page 248
last paragraph, 2nd sentence

"until the RST segment is set"
shouldn't that be
"until the RST segment is sent"? Or something else? "set" doesn't really make sense here.

Note from the Author or Editor:
Strike "the RST segment is set and" from this sentence.

tcordes  Apr 22, 2015 
Printed
Page 256
3rd paragraph, 2nd sentence

"the uplink from the switch from the server": one of those "from"'s should be a "to".

tcordes  Apr 22, 2015 
Printed
Page 257
2nd paragraph

"the nfs:nfsv3_nra_kernel parameter to 6" should read:
"the nfs:nfs3_nra kernel parameter to 6"

Anonymous   
Printed
Page 265
1st paragraph

In the paragraph titled "The maxusers parameter" this formula is given: 7 x maxusers
+ 9C

According to Sun's documentation, the correct formula is (17 x maxusers) + 90 That
is, 17 not 7, 90 not 9C. This is confirmed by the value of 34,906 given at the bottom
of the page.

As an aside, IMO use of parens would be nice to disambiguate the order of the
operation for users who not sure about operator precedence, etc.

AUTHOR: Correct -- this is a typesetting error....

Anonymous   
Printed
Page 271
1st paragraph, 1st sentence

"changing an multi-threaded application's"
should be:
"changing a multi-threaded application's"

tcordes  Apr 22, 2015 
Printed
Page 271
point 1 near bottom of page

"where we first starting comparing"
should be "start" or "started".

tcordes  Apr 22, 2015 
Printed
Page 272
last paragraph, 1st sentence

"Repeat until either conditions 2 or 3 are true":
The conditions should instead be "3 or 4".

tcordes  Apr 22, 2015 
Printed
Page 273
Table 8-1, steps 4, 5, 6 and 9

Step 4: the rule applied is 1, not 2.
Step 5: is eliminated by the change to step 4.
Step 6: the c and b are reversed.
Step 9: both b's should be d's.

tcordes  Apr 22, 2015 
Printed
Page 273
equation between 1st and 2nd text paragraphs

The LHS English-language version of the equation doesn't match the RHS (i.e., no multiplication on the LHS).

Also, shouldn't the RHS be T x (S-T+1)? If S=2 and T=1, the equation as printed would yield 1 comparison, which is wrong: it should be 2. The modified equation yields the correct result.

tcordes  Apr 22, 2015 
Printed
Page 276
2nd paragraph, 1st sentence

"for analyzing an applications' performance": either the singular "an" should be eliminated to match plural-possessive "applications'", or "applications'" should be changed to "application's" (singular).

tcordes  Apr 22, 2015 
Printed
Page 291
IN PRINT: Section titled Arithmetic, 8th line

"It is by far the most common arithmatic optimization."

SHOULD BE:

"It is by far the most common arithmetic optimization."

Anonymous   
Printed
Page 291
3rd paragraph

Java Performance Tuning is written by Jack Shirazi and not by Jack Shiraz.

Anonymous   
Printed
Page 292
Section titled Loops, tuned algorithm

The tuned algorithm is shown as:

for (i =0; i<= 1024; i++) {
x = x * a[i] * b[i];
y = y * a[j] * b[j];
}

Obviously j is not incremented. Should it be like:

for (i =0; i <= 1024; i++) {
z = a[i] * b[i];
x = x * z;
y = y * z;
}

Note from the Author or Editor:
Replace the "Untuned" code with the following (use 'i' as the loop counter in both cases):
for (i = 0; i <= 1024; i++) {
x = x * a[i] * b[i];
}
for (i = 0; i <= 1024; i++) {
y = y * a[i] * b[i];
}

Replace "Tuned" code with the following:
for (i = 0; i <= 1024; i++) {
x = x * a[i] * b[i];
y = y * a[i] * b[i];
}

Anonymous   
Printed
Page 308
3rd-last paragraph, 2nd-last sentence

"Linux web servers" should be "Linux NFS servers" as this is the NFS subsection, web servers haven't been discussed yet, and if it's not "Linux NFS servers" that would mean Linux NFS servers were never mentioned in the whole book (and thus inconsistent with the other subsections in "Instant Tuning").

tcordes  Apr 22, 2015