<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>etbe &#8211; Russell Coker</title>
	<atom:link href="https://etbe.coker.com.au/feed/" rel="self" type="application/rss+xml" />
	<link>https://etbe.coker.com.au</link>
	<description>Linux, politics, and other interesting things</description>
	<lastBuildDate>Sat, 20 Jun 2026 14:01:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
<site xmlns="com-wordpress:feed-additions:1">1818743</site>	<item>
		<title>HP Z4 G4</title>
		<link>https://etbe.coker.com.au/2026/06/21/hp-z4-g4/</link>
					<comments>https://etbe.coker.com.au/2026/06/21/hp-z4-g4/#respond</comments>
		
		<dc:creator><![CDATA[etbe]]></dc:creator>
		<pubDate>Sat, 20 Jun 2026 14:01:27 +0000</pubDate>
				<category><![CDATA[Review]]></category>
		<guid isPermaLink="false">https://etbe.coker.com.au/?p=6164</guid>

					<description><![CDATA[In what is hopefully the conclusion of my hunt for a cheap tower server supporting REBAR [1] I have just bought a HP Z4 G4 with W-2125 CPU for $320. Hardware One interesting thing is that it has an adaptor from SATA power to 8 pin PCIe power. According to Wikipedia the 8 pin connector [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In what is hopefully the conclusion of my <a href="https://etbe.coker.com.au/2026/05/04/tower-servers-rebar/">hunt for a cheap tower server supporting REBAR [1]</a> I have just bought a HP Z4 G4 with W-2125 CPU for $320.</p>
<h2>Hardware</h2>
<p>One interesting thing is that it has an adaptor from SATA power to 8 pin PCIe power. <a href="https://en.wikipedia.org/wiki/PCI_Express#6-_and_8-pin_power_connectors">According to Wikipedia the 8 pin connector provides 150W at 12V [2]</a>. <a href="https://en.wikipedia.org/wiki/SATA#SATA_power_connectors">According to Wikipedia SATA power cables include 3 12V pins each of which can deliver 1.5A [3]</a> which is 54W. The system as I received it had a single SATA power plug connected so potentially 150W could be drawn from a connector designed for 54W. The first thing I did was to connect a second SATA power connector on the same cable so I could have connectors designed for a total of 108W supplying potentially 150W (and definitely more than 75W).</p>
<p>I found two versions of the specs for this system, <a href="https://h20195.www2.hp.com/v2/getpdf.aspx/c05527757.pdf?ver=4">this version seems to match what I bought as it references W-21xx CPUs [4]</a> while <a href="https://h20195.www2.hp.com/v2/getpdf.aspx/c05527757.pdf">this version matches what I would rather have with a W-22xx CPU [5]</a>. The URL naming scheme implies that there are potentially at least a few other variants out there. So much for the &#8220;buy name brand and you can buy two systems with the same model and have them work the same&#8221; benefit you hope to get. Why don&#8217;t they just name them &#8220;G4.1&#8221;, &#8220;G4.2&#8221;, etc?</p>
<p>It seems that W-21xx and W-22xx CPUs are incompatible, so the <a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+W-2295+%40+3.00GHz&#038;id=3701">W-2295 scoring 30,804 multithread and 2,634 single thread on passmark that I hoped to get isn&#8217;t an option [6]</a>.</p>
<p>The system is well designed for space efficiency, both it and the Z640 are 17cm wide but the Z4G4 allows my to close the lid with the Intel Battlemage card installed which doesn&#8217;t come close to fitting in a Z640. It has 8 DIMM sockets and with the ready availability of 32G DIMMS that allows 256G of RAM which is the maximum the motherboard supports. That compares well to the Z640 that only has 4 DIMM slots and the Z6G4 which only has 6.</p>
<p>The system supports a maximum RAM speed of DDR4-2666 which is better than the DDR4-2400 of the Z640 but less than the DDR4-2933 of the Z6G4.</p>
<p>The NVMe sockets on the motherboard are a convenient feature. Most systems I run need at most two NVMe devices so this saves a PCIe slot which is important when dealing with GPUs that take 2+ slots. Also for systems that don&#8217;t really need NVMe I can use some of the small NVMe devices that I have no other use for. 128G NVMe devices aren&#8217;t even worth selling and 256G will be of little use in the near future. So when I move to gen4 Z servers I can use up some of them without wasting slots.</p>
<p>Using the lesser socket LGA2066 in the Z4G4 is a minor annoyance, but for a single socket system 18 cores is probably enough.</p>
<p>The BIOS has an option for single-socket NUMA, which is basically locking cores in a single CPU to specific RAM channels. I enabled it but it did nothing presumably because I only have 2 DIMMs. When I get more DIMMs I&#8217;ll do some tests of that and compare it with NUMA on my Z840.</p>
<h2>Variants</h2>
<p>There are many different variants of the Z4G4 and the only way to recognise them is by the CPU not by any part number or serial number AFAIK. The first difference is between server grade CPUs (the W-2xxx CPUs) and desktop grade CPUs (the i7 and i9 CPUs). The systems with i7 and i9 CPUs don&#8217;t support ECC RAM which makes them less reliable, gives smaller limits for RAM</p>
<p>The below table compares the Z640 which is my current desktop PC with the Z4G4, Z6G4, and Z8G4 systems. For the latter 3 I have included multiple options for the parts that differ in different models in the same name series. The Z4G4 I have is an early one which only supports W-21xx CPUs which means a maximum RAM speed of 2666 and the best possible CPU would only be 15% faster than my Z640. I can only use this for ML stuff as it&#8217;s the only system I have with REBAR support (which works well).</p>
<table>
<tr>
<th></th>
<th>Z640 (1 socket)</th>
<th>Z4G4</th>
<th>Z6G4 (1 socket)</th>
<th>Z8G4</th>
</tr>
<tr>
<td>DIMM slots</td>
<td>4</td>
<td>8</td>
<td>6</td>
<td>24</td>
</tr>
<tr>
<td>Max DDR4 speed</td>
<td>2400</td>
<td>2666/2933</td>
<td>2666/2933</td>
<td>2666/2933</td>
</tr>
<tr>
<td>Max DIMM size</td>
<td>32G</td>
<td>64G</td>
<td>64G</td>
<td>64G/128G</td>
</tr>
<tr>
<td>System Max Ram</td>
<td>128G</td>
<td>512G</td>
<td>192G/384G</td>
<td>1.5T/3T</td>
</tr>
<tr>
<td>CPU Socket</td>
<td>LGA2011-3</td>
<td>LGA2066</td>
<td>LGA3647</td>
<td>LGA3647</td>
</tr>
<tr>
<td>Best CPU</td>
<td>E5-2699A v4</td>
<td>W-2195/W-2295</td>
<td>Platinum 8180/W-3275</td>
<td>Platinum 8180/8280</td>
</tr>
<tr>
<td>Motherboard NVMe</td>
<td>0</td>
<td>2</td>
<td>2</td>
<td>?</td>
</tr>
</table>
<h2>Conclusion</h2>
<p><a href="https://etbe.coker.com.au/2025/08/02/server-cpu-sockets/">In my previous blog post I concluded that the next step up for me would be DDR5 systems [10]</a>. But now some of the LGA3647 systems are appealing. The Z8G4 would be a decent upgrade from my current Z840 build server and should be affordable long before any two socket DDR5 system becomes affordable.</p>
<p>The Z4G4 doesn&#8217;t have any potential for useful upgrades. But for me it was a good cheap way to house a GPU that had already damaged the motherboard of one good system. If the Z4G4 has a PCIe slot break the way my Z840 did then it wouldn&#8217;t bother me a lot. It was annoying to discover how limited this variant of the Z4G4 is after buying it, but at that price I can&#8217;t complain.</p>
<p>A Z6G4 could be a nice workstation if I found one at a really low price. The only reason I&#8217;d seek one out is if I had a need for a desktop workstation with REBAR support, which seems unlikely.</p>
<ul>
<li>[1]<a href="https://etbe.coker.com.au/2026/05/04/tower-servers-rebar/"> https://etbe.coker.com.au/2026/05/04/tower-servers-rebar/</a></li>
<li>[2]<a href="https://en.wikipedia.org/wiki/PCI_Express#6-_and_8-pin_power_connectors"> https://en.wikipedia.org/wiki/PCI_Express#6-_and_8-pin_power_connectors</a></li>
<li>[3]<a href="https://en.wikipedia.org/wiki/SATA#SATA_power_connectors"> https://en.wikipedia.org/wiki/SATA#SATA_power_connectors</a></li>
<li>[4]<a href="https://h20195.www2.hp.com/v2/getpdf.aspx/c05527757.pdf?ver=4"> https://h20195.www2.hp.com/v2/getpdf.aspx/c05527757.pdf?ver=4</a></li>
<li>[5]<a href="https://h20195.www2.hp.com/v2/getpdf.aspx/c05527757.pdf"> https://h20195.www2.hp.com/v2/getpdf.aspx/c05527757.pdf</a></li>
<li>[6]<a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+W-2295+%40+3.00GHz&#038;id=3701"> https://tinyurl.com/2avfb8qe</a></li>
<li>[7]<a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+W-2125+%40+4.00GHz&#038;id=3146"> https://tinyurl.com/2ddf7t5y</a></li>
<li>[8]<a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E5-2620+%40+2.00GHz&#038;id=1214"> https://tinyurl.com/kgmagfs</a></li>
<li>[9]<a href="https://etbe.coker.com.au/2026/04/10/hp-z640-e5-2696-v4/"> https://etbe.coker.com.au/2026/04/10/hp-z640-e5-2696-v4/</a></li>
<li>[10]<a href="https://etbe.coker.com.au/2025/08/02/server-cpu-sockets/"> https://etbe.coker.com.au/2025/08/02/server-cpu-sockets/</a></li>
</ul>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Related posts:</p><ol>
<li><a href="https://etbe.coker.com.au/2026/05/04/tower-servers-rebar/" rel="bookmark" title="Tower Servers and Resizable BAR">Tower Servers and Resizable BAR</a> <small>A feature on modern PCIe implementations is &#8220;Resizable BAR&#8221; AKA...</small></li>
<li><a href="https://etbe.coker.com.au/2025/08/02/server-cpu-sockets/" rel="bookmark" title="Server CPU Sockets">Server CPU Sockets</a> <small>I am always looking for ways of increasing the compute...</small></li>
<li><a href="https://etbe.coker.com.au/2025/04/05/hp-ml110-gen9-z640/" rel="bookmark" title="More About the HP ML110 Gen9 and z640">More About the HP ML110 Gen9 and z640</a> <small>In May 2021 I bought a ML110 Gen9 to use...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://etbe.coker.com.au/2026/06/21/hp-z4-g4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6164</post-id>	</item>
		<item>
		<title>Font Sizes</title>
		<link>https://etbe.coker.com.au/2026/06/20/font-sizes/</link>
					<comments>https://etbe.coker.com.au/2026/06/20/font-sizes/#respond</comments>
		
		<dc:creator><![CDATA[etbe]]></dc:creator>
		<pubDate>Sat, 20 Jun 2026 12:27:08 +0000</pubDate>
				<category><![CDATA[Misc Computer]]></category>
		<guid isPermaLink="false">https://etbe.coker.com.au/?p=6193</guid>

					<description><![CDATA[The Problem In 2019 I blogged about getting a 4K monitor because of my vision being inadequate for a 2560*1440 monitor [1]. Now I&#8217;m using a 40&#8243; 5120*2160 monitor [2] and still trying to find the correct balance between how much I want to see on the screen and what I am physically capable of [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>The Problem</h2>
<p><a href="https://etbe.coker.com.au/2019/11/18/4k-monitors/">In 2019 I blogged about getting a 4K monitor because of my vision being inadequate for a 2560*1440 monitor [1]</a>. Now I&#8217;m using a <a href="https://etbe.coker.com.au/2024/07/23/more-5120x2160-monitor/">40&#8243; 5120*2160 monitor [2]</a> and still trying to find the correct balance between how much I want to see on the screen and what I am physically capable of seeing on screen.</p>
<p>Currently <a href="https://etbe.coker.com.au/2023/10/29/hello-kitty/">Kitty is my terminal emulator of choice [3]</a>. What I most like about it is the feature of having multiple terminal windows in a single OS window, so instead of having 9 or 16 different xterm instances running all with possible alignment issues I have a single window for all terminals which can be brought to the foreground. The impending <a href="https://kde.org/announcements/plasma/6/6.7.0/">6.7 release of KDE (my favourite Linux desktop environment) [4]</a> includes the feature of per-screen virtual desktops which might be the feature I need to make multiple monitors usable for me. One of the factors stopping me from using multiple monitors in the past was the issue of not getting the alignment of dozens of xterms right if a monitor goes to sleep mode and is regarded as disconnected, moving a few Kitty windows is much easier than moving dozens of xterms (also a tiling window manager isn&#8217;t my style).</p>
<p>I&#8217;ve just decided that the Terminus font (my favourite out of the monospaced fonts in Debian) is too small for me at 9.0 point. But then I tried 10.0 which looked really ugly and an experiment showed that 10.5 looked good.</p>
<h2>What I&#8217;ve Learned</h2>
<p><a href="https://tonsky.me/blog/font-size/">This is the best explanation I&#8217;ve seen of how ridiculous the whole font point thing is [5]</a>. It doesn&#8217;t and won&#8217;t ever correlate to pixels. So what we ideally want to do is set the size on screen to match the actual pixel size of the font. I can&#8217;t find any software to interrogate a font file and find out what sizes it supports. The <a href="https://terminus-font.sourceforge.net/">web page for the Terminus font says that it supports 6&#215;12, 8&#215;14, 8&#215;16, 10&#215;18, 10&#215;20, 11&#215;22, 12&#215;24, 14&#215;28 and 16&#215;32 [6]</a>. So the question is how to get a terminal program that uses one of those.</p>
<p>Kitty doesn&#8217;t and won&#8217;t support specifying font size by pixel. I tried some other terminal programs, I started with the <a href="https://wiki.debian.org/TerminalEmulator">Debian Wiki page TerminalEmulator [7]</a> which wasn&#8217;t very helpful, I added some new entries to that page. There doesn&#8217;t seem to be another option for a terminal emulator with multiple terminals in one OS window that can arrange them automatically. I didn&#8217;t even get to the stage of checking whether other terminal emulators supported font size in pixels.</p>
<p>The <b>lcdf-typetools</b> package contains the program <b>otfinfo</b> which gives some interesting information on fonts but nothing about the font sizes in pixels.</p>
<p>Sites like <a href="https://www.codingfont.com/">Coding Font to compare fonts [8]</a> can never work properly as the fonts will always be slightly different sizes as the same point size doesn&#8217;t mean the same display size.</p>
<h2>The Current Situation</h2>
<p>On my 5120*2160 monitor with 9 Kitty terminal sessions with 9.0 point font they each have 277*50 characters. With 10 point it&#8217;s 237*46 but fuzzy and unpleasant to read. With 10.5 point it&#8217;s 208*43 which isn&#8217;t as good as I&#8217;m used to but is still almost 4.5* as many characters as the original 80*25 standard for terminals.</p>
<p>Some time before 2019 I had a 4*4 array of terminal windows that were 100*25 or 120*25. That left some space at the right and bottom so I could open another 8 or 9 terminals that were partially obscured if I needed to. By 2019 before getting a 4K monitor I had a 3*3 array of terminal windows as my standard desktop and a larger monitor that did 4K resolution allowed me to have 16+ terminals again. Now with Kitty I routinely have 9 terminals in a 3*3 array and I can easily open more if I need them and have them resize appropriately.</p>
<p>This situation works reasonably well, but the element of just trying different sizes in 0.5 point increments until I find something that looks good is unpleasant. I should be able to specify the next largest increment of the bitmaps in the font and just have it look good.</p>
<h2>Conclusion</h2>
<p>It would be good if more people tested the terminal emulators in Debian and added information to the wiki page about them. The current page is useful but needs more information to support the variety of features that people find important.</p>
<p>We need some tools to provide information on fonts in Debian, such as the sizes of bitmapped fonts.</p>
<p>The whole point size thing is just wrong and would ideally go away. The vast majority of font use nowadays is for things that will probably never end up on a printed page so trying to map it to a physical size in fractions of an inch makes no sense. But that&#8217;s just one of many horrible things used for backwards compatibility that aren&#8217;t going to go away any time soon. Really everything involving inches should go away.</p>
<ul>
<li>[1]<a href="https://etbe.coker.com.au/2019/11/18/4k-monitors/"> https://etbe.coker.com.au/2019/11/18/4k-monitors/</a></li>
<li>[2]<a href="https://etbe.coker.com.au/2024/07/23/more-5120x2160-monitor/"> https://etbe.coker.com.au/2024/07/23/more-5120&#215;2160-monitor/</a></li>
<li>[3]<a href="https://etbe.coker.com.au/2023/10/29/hello-kitty/"> https://etbe.coker.com.au/2023/10/29/hello-kitty/</a></li>
<li>[4]<a href="https://kde.org/announcements/plasma/6/6.7.0/"> https://kde.org/announcements/plasma/6/6.7.0/</a></li>
<li>[5]<a href="https://tonsky.me/blog/font-size/"> https://tonsky.me/blog/font-size/</a></li>
<li>[6]<a href="https://terminus-font.sourceforge.net/"> https://terminus-font.sourceforge.net/</a></li>
<li>[7]<a href="https://wiki.debian.org/TerminalEmulator"> https://wiki.debian.org/TerminalEmulator</a></li>
<li>[8]<a href="https://www.codingfont.com/"> https://www.codingfont.com/</a></li>
</ul>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Related posts:</p><ol>
<li><a href="https://etbe.coker.com.au/2024/04/28/kitty-mpv/" rel="bookmark" title="Kitty and Mpv">Kitty and Mpv</a> <small>6 months ago I switched to Kitty for terminal emulation...</small></li>
<li><a href="https://etbe.coker.com.au/2023/10/29/hello-kitty/" rel="bookmark" title="Hello Kitty">Hello Kitty</a> <small>I&#8217;ve just discovered a new xterm replacement named Kitty [1]....</small></li>
<li><a href="https://etbe.coker.com.au/2024/04/24/source-code-with-emoji/" rel="bookmark" title="Source Code With Emoji">Source Code With Emoji</a> <small>The XKCD comic Code Quality [1] inspired me to test...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://etbe.coker.com.au/2026/06/20/font-sizes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6193</post-id>	</item>
		<item>
		<title>CPUs and Debian Package Building</title>
		<link>https://etbe.coker.com.au/2026/06/05/cpus-debian-build/</link>
					<comments>https://etbe.coker.com.au/2026/06/05/cpus-debian-build/#respond</comments>
		
		<dc:creator><![CDATA[etbe]]></dc:creator>
		<pubDate>Fri, 05 Jun 2026 07:31:19 +0000</pubDate>
				<category><![CDATA[Misc Computer]]></category>
		<guid isPermaLink="false">https://etbe.coker.com.au/?p=6166</guid>

					<description><![CDATA[Introduction I have just bought a HP Z4 G4 with W-2125 CPU for $320 and I decided it was a good time to do some benchmarks on Debian package building to see which system I should use for that. The W-2125 CPU scores only 9,954 on the passmark multithread test but scores 2,546 on single [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p>I have just bought a HP Z4 G4 with W-2125 CPU for $320 and I decided it was a good time to do some benchmarks on Debian package building to see which system I should use for that.</p>
<p><a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+W-2125+%40+4.00GHz&#038;id=3146">The W-2125 CPU scores only 9,954 on the passmark multithread test but scores 2,546 on single thread [1]</a>. Passmark seems to have some limitations as the only DDR3 system that&#8217;s important to me at the moment (the HP Z420 workstation my parents use which cost me $750 in 2021) with a <a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E5-2620+%40+2.00GHz&#038;id=1214">E5-2620 CPU scoring 5,325 for multithread and 1,113 for single thread [2]</a>. From the passmark results one would expect that the system is slightly more than twice as fast as the Z420 for operations that involve less than 4 CPU cores.</p>
<p>For the initial tests of the Z4 G4 I ran them with hyper-threading enabled as 4 cores isn&#8217;t much by today&#8217;s standards and also the machine in question is going to be less exposed to hostile data and contain less secret data than most of my systems so the security risks of hyper-threading are less of a concern.</p>
<p>I did some tests with a couple of tasks that are very important to me, building SE Linux policy packages (something I may do a dozen times in a day) and building Warzone 2100 (which I do less often but is the most intensive build process I regularly run). At the bottom of this post there are tables with the results from building these packages on <a href="https://etbe.coker.com.au/2026/04/10/hp-z640-e5-2696-v4/">my Z640 workstation with a E5-2696 v4 CPU [3]</a>, the Z420, and the new machine.</p>
<p>For the Warzone 2100 package I tested building on my <a href="https://etbe.coker.com.au/2025/04/05/hp-z840/">Z840 dual CPU system [4]</a>. I didn&#8217;t test building the SE Linux policy on the Z840 this time because that package can&#8217;t take advantage of even 22 cores. When I initially got the Z840 running it built the policy packages faster because the Z640 had an older CPU that was slower for single core operations than the CPUs in the Z840.</p>
<h2>BTRFS Compression</h2>
<p>For some time I have noticed significant differences in compile time on my workstation, a factor of more than 2. I did more tests and noticed that &#8220;top&#8221; showed something like the following, those kernel threads are all BTRFS related, except for &#8220;gfx&#8221; which is probably something graphical caused by running Chrome with about 300 tabs open.</p>
<pre>2144316 root      20   0       0      0      0 I  26.6   0.0   0:36.76 kworker/u88:20-btrfs-endio-write                                                                                                                                                                             
2221470 root      20   0       0      0      0 I  23.7   0.0   0:01.85 kworker/u88:12-gfx                                                                                                                                                                                           
2221436 root      20   0       0      0      0 I  15.1   0.0   0:07.48 kworker/u88:8-btrfs-compressed-write                                                                                                                                                                         
2166191 root      20   0       0      0      0 I  12.8   0.0   0:15.80 kworker/u88:23-btrfs-compressed-write                                                                                                                                                                        
2126387 root      20   0       0      0      0 I  10.2   0.0   1:29.11 kworker/u88:4-events_unbound </pre>
<p>I had been running BTRFS with the mount option &#8220;compress=zstd:15&#8221; which caused much of the performance problems when building. It was also a random performance issue which I think happened due to the BTRFS 30 second write-back sometimes taking more than 30 seconds during the build process which then caused a second write-back.</p>
<p>I did tests on ZSTD compression levels 5, 8, 10, and 15. 15 was never good and often really bad. 10 was not unbearable but consistently slower. 8 was sometimes as fast as 5 and sometimes quite a bit slower. I didn&#8217;t test levels below 5 because I need to have some compression and it seemed that the benefits of reducing compression were dropping off below 8.</p>
<p>I found that the BTRFS compression delay is not counted in system time for the process. I think it&#8217;s the fsync() system calls in the <b>semodule</b> and <b>dpkg-deb</b> programs that cause the delays related to BTRFS compression waiting for kernel threads.</p>
<h2>BOINC</h2>
<p>I have all my systems other than laptops running <a href="https://boinc.berkeley.edu/">BOINC in the background so that CPU power is used for scientific research when I don&#8217;t have any personal use for it [5]</a>. I believe that it&#8217;s immoral to waste CPU power when it could be used for research.</p>
<p>In the below table which has test results from building the package with and without BOINC, and with different ZSTD compression levels in BTRFS all the worst entries were from when BOINC was running apart from one where ZSTD level 15 compression was used. The really poor performance with ZSTD level 15 was an outlier, but it wasn&#8217;t an uncommon outlier so I left it in.</p>
<p>Running BOINC in the background configured to use all CPU cores caused a significant increase in &#8220;user CPU time&#8221; (the time a CPU core spent actually running the program). My initial thought was that it&#8217;s partly related to &#8220;turbo boost&#8221;.</p>
<p><a href="https://www.intel.com/content/www/us/en/products/sku/64594/intel-xeon-processor-e52620-15m-cache-2-00-ghz-7-20-gts-intel-qpi/specifications.html">The Intel ARK page for the CPU in the Z420 shows that it&#8217;s main clock speed is 2.0GHz with a 2.5GHz &#8220;turbo boost&#8221; [6]</a>. The &#8220;turbo boost&#8221; is apparently largely based on temperature and apparently limited to one core, so if the other CPU cores are all being used then the CPU will probably be too hot to have the turbo boost and if it happens it might not happen for my compile processes.</p>
<p><a href="https://www.intel.com/content/www/us/en/products/sku/91317/intel-xeon-processor-e52699-v4-55m-cache-2-20-ghz/specifications.html">The ARK page for the E5-2699 v4 (which is a similar CPU to the E5-2696 v4 that I&#8217;m using but is officially documented by Intel) [7]</a> shows that it has a base clock speed of 2.2GHz and a turbo boost speed of 3.6 GHz. 322 vs 244 seconds of user CPU time means running 32% slower which can plausibly be explained by the lack of a 64% turbo boost with a bit of help from the 55MB L3 cache being thrashed.</p>
<p>Turbo boost would only be a noticeable issue for building packages like the SE Linux policy packages which doesn&#8217;t take much advantage of multi-core CPUs. For a build process to average at best 362% CPU use there has to be large parts of the process that are limited to one or two cores which can potentially give a benefit from turbo-boost.</p>
<p>When building the Warzone 2100 packages most of the build time is running basis-universal which is a multi-threaded program to compress GPU texture data. This usually causes a load average of 300+ on the Z640 or 600+ on the Z840. But the build time is still increased by more than 50% on both the Z640 and the Z840 when BOINC is running in the background, which seems to be an indication that it&#8217;s not related to turbo boost. I verified that BOINC is running at IDLE schedule priority with the following command:</p>
<pre># chrt -p $(pidof -s einstein_O4MD_2.01_x86_64-pc-linux-gnu)
pid 2974874's current scheduling policy: SCHED_IDLE
pid 2974874's current scheduling priority: 0</pre>
<p>In theory this means that BOINC won&#8217;t affect foreground processes.</p>
<h2>Hyper Threading on the W-2125</h2>
<p>The best claims I&#8217;ve seen about HT are 15% to 30% performance boost. The best I&#8217;ve actually seen in the past is about 18%. Seeing a 10% benefit for building Warzone 2100 is at the low end of the range I expected. 8 virtual cores is not many for a build process that causes a load average of 600+ when running on a system with 44 real cores.</p>
<p>I was surprised to see a 6% performance benefit in hyper-threading for building the SE Linux policy as I didn&#8217;t think there was enough use of threading or multiple processes to allow that.</p>
<p>Many build scripts use a number of processes that match the number of apparent CPU cores. While &#8220;make -j 88&#8221; might give a theoretical performance benefit on a 44 core system it will also take a lot of RAM and any paging will outweigh the benefits of hyper-threading. On a system with only 4 real cores there&#8217;s less potential for using too much RAM and as security isn&#8217;t so important on that system I will leave it on.</p>
<h2>Comparing the CPUs</h2>
<p>The best results of the Z640 and Z4G4 are only 50% faster than the best results of the Z420.</p>
<p>The Z420 has a E5-2620 CPU which is far from the fastest CPU available for that system &#8211; the <a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E5-2687W+%40+3.10GHz&#038;id=1222">E5-2687W has 8 cores and rates 10,021/1,669 on passmark [8]</a> which is far better than the 5,331/1,114 the E5-2620. The E5-2687W is the fastest CPU that HP lists as supported by the Z420 and it supports DDR3-1666 RAM as opposed to the DDR3-1333 that is the fastest that the E5-2620 supports. With suitable hardware upgrades the Z420 would probably only take about 20% longer to do builds of the SE Linux policy and other packages that can&#8217;t take advantage of more than 8 CPU cores.</p>
<p>The Z4G4 system has 4 RAM channels which means that you should get some performance benefits from having 4 DIMMs, my system currently has 2 and I haven&#8217;t yet managed to get more DDR4-2666 DIMMs. But I&#8217;d still expected a W-2125 CPU with 2*DDR4-2666 DIMMs outperform any E5-26xx CPU with 4*DDR4-DDR-2400 DIMMs for tasks that average less than 4 CPU cores.</p>
<p>In retrospect I would have been better off getting a HP Z820 (two socket server with DDR3 RAM) than the first DDR4 systems I got. It seems that for reasonable size builds a two socket system comes close to twice the speed of a single socket system. I did briefly own a HP ML350 two CPU system with DDR3 RAM but it was too noisy for my intended use as a deskside workstation so I sold it.</p>
<h2>Things to Investigate</h2>
<p>I plan to do more investigation on BTRFS compression, how to get the best compression without excessive delays and how to recognise when delays are happening. I have some SSDs that have sustained write speeds as low as 15MB/s (Crucial P1 series) so for those I could probably have very high compression levels without slowing the system down.</p>
<p>The fact that BIONC slows things down so much seems to be a bug. When processes are running with the IDLE scheduling class there shouldn&#8217;t be such significant delays. Is it due to cache thrashing? How can I best get BOINC suitably throttled when I&#8217;m sitting at my workstation, I don&#8217;t want BOINC connecting to the local X server (which it repeatedly tries to do). Do I need to tune my kernel for better handling of IDLE scheduling?</p>
<p>When I get more DIMMs in the Z4G4 I need to do more tests to see if it gives an overall performance boost.</p>
<p>Also the Z4G4 system has a BIOS option for &#8220;sub NUMA&#8221; which basically means treating the different RAM channels on a single CPU as NUMA zones, I enabled that option which does nothing presumably because I only have 2 DIMMs, the results when I have 4 DIMMs will be interesting. I will also do some NUMA tests on the Z840 to see what benefits it gives.</p>
<p>I have a selection of RAM speeds that will work in the Z4G4, if I have enough spare time I&#8217;ll test what difference that makes for CPU bound tasks that matter to me.</p>
<p>For package building fsync() is not helpful, if the system crashes before it&#8217;s done then I will just do the build again. For a build cluster it is probably a good feature and probably doesn&#8217;t affect aggregate performance when multiple packages are built at the same time, but for the single user case probably not. I will investigate <a href="https://www.flamingspork.com/projects/libeatmydata/">libeatmydata for package building [9]</a>.</p>
<h2>Conclusion</h2>
<p>The progress in CPUs seems to have slowed down a lot recently. The main benefits seem to be in more CPU cores and for newer sockets with more RAM channels.</p>
<p>The CPUs that do have improvements in single core performance are the i9 series (which mostly doesn&#8217;t come with motherboards supporting ECC) and AMD CPUs (which is rare in enterprise class hardware). Maybe I should get a server with an i9 or AMD CPU for tasks that need a fast turn around with a small number of cores. That would probably outperform any CPU designed for large core counts for things like building the policy and setting up test VMs (which depends on package installation speed that is single core bottlenecked).</p>
<p>The W-21xx CPUs seem to offer little benefit over the E5-26xxv4 CPUs and not a lot of benefit over E5-26xx CPUs (with DDR3). Even the W-22xx CPUs look like they aren&#8217;t going to offer a lot as they are only an incremental improvement over the W-21xx series. I had considered making the Z4G4 my main desktop workstation after the high end W CPUs become affordable, but it looks like that won&#8217;t be worth it until such CPUs drop from the current ebay price of $900 to $100.</p>
<p>I think <a href="https://etbe.coker.com.au/2025/08/02/server-cpu-sockets/">I&#8217;ll keep waiting for a decent socket LGA3647 or DDR5 based server [10]</a> for my next significant upgrade.</p>
<h2>Tables</h2>
<h3>Building SE Linux Refpolicy</h3>
<table>
<tr>
<th>System</th>
<th>BOINC</th>
<th>Compression</th>
<th>CPU Time</th>
<th> Elapsed</th>
<th>CPU%</th>
</tr>
<tr>
<td>Z640</td>
<td>no</td>
<td>8</td>
<td>248.82user 55.58system</td>
<td>1:23.88elapsed</td>
<td>362%CPU</td>
</tr>
<tr>
<td>Z4G4</td>
<td>no</td>
<td>5</td>
<td>245.15user 34.63system</td>
<td>1:24.93elapsed</td>
<td>329%CPU</td>
</tr>
<tr>
<td>Z640</td>
<td>no</td>
<td>5</td>
<td>244.75user 34.87system</td>
<td>1:25.98elapsed</td>
<td>325%CPU</td>
</tr>
<tr>
<td>Z4G4</td>
<td>no</td>
<td>10</td>
<td>245.21user 35.64system</td>
<td>1:29.63elapsed</td>
<td>313%CPU</td>
</tr>
<tr>
<td>Z640</td>
<td>no</td>
<td>8</td>
<td>248.71user 55.90system</td>
<td>1:33.01elapsed</td>
<td>327%CPU</td>
</tr>
<tr>
<td>Z640</td>
<td>no</td>
<td>10</td>
<td>250.90user 55.78system</td>
<td>1:42.12elapsed</td>
<td>300%CPU</td>
</tr>
<tr>
<td>Z640</td>
<td>yes</td>
<td>8</td>
<td>298.19user 69.30system</td>
<td>1:59.77elapsed</td>
<td>306%CPU</td>
</tr>
<tr>
<td>Z640</td>
<td>yes</td>
<td>10</td>
<td>300.58user 68.90system</td>
<td>2:01.53elapsed</td>
<td>304%CPU</td>
</tr>
<tr>
<td>Z420</td>
<td>no</td>
<td>5</td>
<td>359.01user 44.95system</td>
<td>2:07.33elapsed</td>
<td>317%CPU</td>
</tr>
<tr>
<td>Z640</td>
<td>yes</td>
<td>5</td>
<td>322.40user 71.82system</td>
<td>2:34.66elapsed</td>
<td>254%CPU</td>
</tr>
<tr>
<td>Z420</td>
<td>yes</td>
<td>5</td>
<td>372.03user 42.95system</td>
<td>2:42.15elapsed</td>
<td>255%CPU</td>
</tr>
<tr>
<td>Z640</td>
<td>yes</td>
<td>15</td>
<td>299.26user 67.18system</td>
<td>2:59.77elapsed</td>
<td>203%CPU</td>
</tr>
<tr>
<td>Z640</td>
<td>no</td>
<td>15</td>
<td>250.05user 54.60system</td>
<td>3:07.61elapsed</td>
<td>162%CPU</td>
</tr>
</table>
<h3>Building Warzone 2100</h3>
<table>
<tr>
<th>System</th>
<th>BOINC</th>
<th>Compression</th>
<th>CPU Time</th>
<th> Elapsed</th>
<th>CPU%</th>
</tr>
<tr>
<td>Z840</td>
<td>no</td>
<td>10</td>
<td>6549.21user 89.46system</td>
<td>4:18.90elapsed</td>
<td>2564%CPU</td>
</tr>
<tr>
<td>Z840</td>
<td>no</td>
<td>5</td>
<td>6533.81user 90.50system</td>
<td>4:19.24elapsed</td>
<td>2555%CPU</td>
</tr>
<tr>
<td>Z640</td>
<td>no</td>
<td>5</td>
<td>7040.87user 183.12system</td>
<td>7:13.50elapsed</td>
<td>1666%CPU</td>
</tr>
<tr>
<td>Z840</td>
<td>yes</td>
<td>5</td>
<td>8039.52user 169.62system</td>
<td>8:02.86elapsed</td>
<td>1700%CPU</td>
</tr>
<tr>
<td>Z640</td>
<td>yes</td>
<td>5</td>
<td>7486.44user 205.03system</td>
<td>11:09.97elapsed</td>
<td>1148%CPU</td>
</tr>
<tr>
<td>Z4G4</td>
<td>no</td>
<td>5</td>
<td>7891.32user 74.45system</td>
<td>17:48.03elapsed</td>
<td>745%CPU</td>
</tr>
<tr>
<td>Z4G4</td>
<td>no</td>
<td>10</td>
<td>7942.10user 77.43system</td>
<td>17:58.72elapsed</td>
<td>743%CPU</td>
</tr>
</table>
<h3>Hyper-Threading</h3>
<table>
<tr>
<th>Build</th>
<th>HT</th>
<th>Compression</th>
<th>CPU Time</th>
<th> Elapsed</th>
<th>CPU%</th>
</tr>
<tr>
<td>Warzone</td>
<td>yes</td>
<td>5</td>
<td>7891.32user 74.45system</td>
<td>17:48.03elapsed</td>
<td>745%CPU</td>
</tr>
<tr>
<td>Warzone</td>
<td>yes</td>
<td>10</td>
<td>7942.10user 77.43system</td>
<td>17:58.72elapsed</td>
<td>743%CPU</td>
</tr>
<tr>
<td>Warzone</td>
<td>no</td>
<td>5</td>
<td>4492.45user 59.09system</td>
<td>19:59.01elapsed</td>
<td>379%CPU</td>
</tr>
<tr>
<td>Warzone</td>
<td>no</td>
<td>10</td>
<td>4497.28user 59.46system</td>
<td>20:07.15elapsed</td>
<td>377%CPU</td>
</tr>
<tr>
<td>Refpolicy</td>
<td>yes</td>
<td>5</td>
<td>245.15user 34.63system</td>
<td>1:24.93elapsed</td>
<td>329%CPU</td>
</tr>
<tr>
<td>Refpolicy</td>
<td>yes</td>
<td>10</td>
<td>245.21user 35.64system</td>
<td>1:29.63elapsed</td>
<td>313%CPU</td>
</tr>
<tr>
<td>Refpolicy</td>
<td>no</td>
<td>5</td>
<td>180.84user 29.74system</td>
<td>1:32.30elapsed</td>
<td>228%CPU</td>
</tr>
<tr>
<td>Refpolicy</td>
<td>no</td>
<td>10</td>
<td>180.29user 30.07system</td>
<td>1:35.01elapsed</td>
<td>221%CPU</td>
</tr>
</table>
<ul>
<li>[1]<a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+W-2125+%40+4.00GHz&#038;id=3146"> https://tinyurl.com/2ddf7t5y</a></li>
<li>[2]<a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E5-2620+%40+2.00GHz&#038;id=1214"> https://tinyurl.com/kgmagfs</a></li>
<li>[3]<a href="https://etbe.coker.com.au/2026/04/10/hp-z640-e5-2696-v4/"> https://etbe.coker.com.au/2026/04/10/hp-z640-e5-2696-v4/</a></li>
<li>[4]<a href="https://etbe.coker.com.au/2025/04/05/hp-z840/"> https://etbe.coker.com.au/2025/04/05/hp-z840/</a></li>
<li>[5]<a href="https://boinc.berkeley.edu/"> https://boinc.berkeley.edu/</a></li>
<li>[6]<a href="https://www.intel.com/content/www/us/en/products/sku/64594/intel-xeon-processor-e52620-15m-cache-2-00-ghz-7-20-gts-intel-qpi/specifications.html"> https://tinyurl.com/2mopjxgc</a></li>
<li>[7]<a href="https://www.intel.com/content/www/us/en/products/sku/91317/intel-xeon-processor-e52699-v4-55m-cache-2-20-ghz/specifications.html"> https://tinyurl.com/2r3j4bzg</a></li>
<li>[8]<a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E5-2687W+%40+3.10GHz&#038;id=1222"> https://tinyurl.com/reu2p84</a></li>
<li>[9]<a href="https://www.flamingspork.com/projects/libeatmydata/"> https://www.flamingspork.com/projects/libeatmydata/</a></li>
<li>[10]<a href="https://etbe.coker.com.au/2025/08/02/server-cpu-sockets/"> https://etbe.coker.com.au/2025/08/02/server-cpu-sockets/</a></li>
</ul>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Related posts:</p><ol>
<li><a href="https://etbe.coker.com.au/2025/04/05/hp-z840/" rel="bookmark" title="HP z840">HP z840</a> <small>Many PCs with DDR4 RAM have started going cheap on...</small></li>
<li><a href="https://etbe.coker.com.au/2023/03/13/firebuild/" rel="bookmark" title="Firebuild">Firebuild</a> <small>After reading Bálint&#8217;s blog post about Firebuild (a compile cache)...</small></li>
<li><a href="https://etbe.coker.com.au/2025/06/19/matching-intel-cpus/" rel="bookmark" title="Matching Intel CPUs">Matching Intel CPUs</a> <small>To run a SMP system with multiple CPUs you need...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://etbe.coker.com.au/2026/06/05/cpus-debian-build/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6166</post-id>	</item>
		<item>
		<title>Links May 2026</title>
		<link>https://etbe.coker.com.au/2026/05/31/links-may-2026/</link>
					<comments>https://etbe.coker.com.au/2026/05/31/links-may-2026/#respond</comments>
		
		<dc:creator><![CDATA[etbe]]></dc:creator>
		<pubDate>Sun, 31 May 2026 12:08:38 +0000</pubDate>
				<category><![CDATA[Links]]></category>
		<guid isPermaLink="false">https://etbe.coker.com.au/?p=6161</guid>

					<description><![CDATA[Ron Garrett wrote an interesting blog post about the mathematical possibility of abiogenesis [1]. Cory Doctorow wrote an interesting blog post about the way the current antics of right wing extremists are forcing permanent changes in society away from the old systems [2]. William Angel wrote an insightful blog post comparing the costs of a [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://blog.rongarret.info/2026/05/big-news-plausibility-of-abiogenesis.html">Ron Garrett wrote an interesting blog post about the mathematical possibility of abiogenesis [1]</a>.</p>
<p><a href="https://pluralistic.net/2026/04/20/praxis/#acceleration">Cory Doctorow wrote an interesting blog post about the way the current antics of right wing extremists are forcing permanent changes in society away from the old systems [2]</a>.</p>
<p><a href="https://www.williamangel.net/blog/2026/05/17/offline-llm-energy-use.html">William Angel wrote an insightful blog post comparing the costs of a Macbook and the Openrouter hosted service for LLMs [3]</a>.</p>
<p><a href="https://www.theregister.com/systems/2026/05/16/europe-built-sovereign-clouds-to-escape-us-control-then-forgot-about-the-processors/5237735">The Register has an informative article about the threat that management systems built in to Intel and AMD CPUs pose to data sovereignty in EU owned cloud providers [4]</a>. But this is just the first stage of building sovereign clouds, all significaant cloud services run at least 2 types of CPU and adding EU manufactured CPUs at a future time will be easy.</p>
<p><a href="https://www.youtube.com/watch?v=_bP80DEAbuo">Benn Jordan made an interesting YouTube video about the infrasound problems caused by data centers, we need FOSS to measure infrasound [5]</a>.</p>
<p><a href="https://forums.puri.sm/t/tutorial-create-a-separate-firefox-profile-with-desktop-launcher/30653">amarok on the Purism forum made a great post about how to setup profiles in Firefox for different uses [6]</a>.</p>
<p><a href="https://forums.puri.sm/t/how-to-increase-privacy-on-spy-phones-with-your-librem5/30634">fralb5 wrote an informative post on the Purism forum about how to use a Librem 5 (or any other FOSS Linux phone) to firewall spyware on an Android phone [7]</a>.</p>
<p><a href="https://michael-prokop.at/blog/2026/05/20/the-mysterious-xf86audioplay-issue/">Michael Prokop wrote an interesting blog post about debugging input event problems on Linux which turned out to be due to an analogue headphone connection [8]</a>. This gave me some useful pointers to investigating an input device problem which is probably very different.</p>
<p><a href="https://www.youtube.com/watch?v=IHD8BDFYyGI">Patrick Boyle made an insightful youtube video about the ridiculous IPO of SpaceX, it seems like a scam from start to finish [9]</a>.</p>
<p><a href="https://anarc.at/blog/2026-05-16-four-horsemen/">Anarcat wrote an insightful blog post about the LLM apocalypse comparing it to the horsemen of the apocalypse [10]</a>.</p>
<p><a href="https://medium.com/@jakeorlowitz/wikipedia-is-doing-the-capitalist-thing-56a393232943">The Wikimedia Foundation (that runs wikipedia.org among other things) is sacking union organisers and trying to corporatise the organisation which means stealing the donations from the community [11]</a>.</p>
<p><a href="https://ram.tianon.xyz/post/2026/05/20/container-security.html">Tianon Gravi wrote an informative blog post about containers, Debian, and Docker options [12]</a>. We need a lot more work on these sorts of things in Debian.</p>
<p><a href="https://arxiv.org/pdf/1802.09517">Memory Tagging and how it improves C/C++ memory safety is an interesting paper from Google researchers giving an overview of the benefits of tagged memory hardware for pointer validation on SPARC and ARM64 [13]</a>.</p>
<p><a href="https://www.upi.com/Odd_News/2013/06/05/Beer-fridge-knocks-out-mobile-network-in-Australia/7421370444005/">In 2013 a faulty beer fridge motor acted as a spark gap transmitter and blocked mobile phone service for several Melbourne suburbs [14]</a>.</p>
<ul>
<li>[1]<a href="https://blog.rongarret.info/2026/05/big-news-plausibility-of-abiogenesis.html"> https://tinyurl.com/25p5w844</a></li>
<li>[2]<a href="https://pluralistic.net/2026/04/20/praxis/#acceleration"> https://pluralistic.net/2026/04/20/praxis/#acceleration</a></li>
<li>[3]<a href="https://www.williamangel.net/blog/2026/05/17/offline-llm-energy-use.html"> https://tinyurl.com/2az3uazq</a></li>
<li>[4]<a href="https://www.theregister.com/systems/2026/05/16/europe-built-sovereign-clouds-to-escape-us-control-then-forgot-about-the-processors/5237735"> https://tinyurl.com/26aygdv6</a></li>
<li>[5]<a href="https://www.youtube.com/watch?v=_bP80DEAbuo"> https://www.youtube.com/watch?v=_bP80DEAbuo</a></li>
<li>[6]<a href="https://forums.puri.sm/t/tutorial-create-a-separate-firefox-profile-with-desktop-launcher/30653"> https://tinyurl.com/yvnszuyh</a></li>
<li>[7]<a href="https://forums.puri.sm/t/how-to-increase-privacy-on-spy-phones-with-your-librem5/30634"> https://tinyurl.com/ymmcpt9t</a></li>
<li>[8]<a href="https://michael-prokop.at/blog/2026/05/20/the-mysterious-xf86audioplay-issue/"> https://tinyurl.com/2859uflr</a></li>
<li>[9]<a href="https://www.youtube.com/watch?v=IHD8BDFYyGI"> https://www.youtube.com/watch?v=IHD8BDFYyGI</a></li>
<li>[10]<a href="https://anarc.at/blog/2026-05-16-four-horsemen/"> https://anarc.at/blog/2026-05-16-four-horsemen/</a></li>
<li>[11]<a href="https://medium.com/@jakeorlowitz/wikipedia-is-doing-the-capitalist-thing-56a393232943"> https://tinyurl.com/26mhk6ok</a></li>
<li>[12]<a href="https://ram.tianon.xyz/post/2026/05/20/container-security.html"> https://tinyurl.com/2dba3jut</a></li>
<li>[13]<a href="https://arxiv.org/pdf/1802.09517"> https://arxiv.org/pdf/1802.09517</a></li>
<li>[14]<a href="https://www.upi.com/Odd_News/2013/06/05/Beer-fridge-knocks-out-mobile-network-in-Australia/7421370444005/"> https://tinyurl.com/2cfo3nsa</a></li>
</ul>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Related posts:</p><ol>
<li><a href="https://etbe.coker.com.au/2026/04/30/links-april-2026/" rel="bookmark" title="Links April 2026">Links April 2026</a> <small>Charles Stross wrote an interesting blog post about the apparent...</small></li>
<li><a href="https://etbe.coker.com.au/2026/02/17/links-february-2026/" rel="bookmark" title="Links February 2026">Links February 2026</a> <small>Charles Stross has a good theory of why &#8220;AI&#8221; is...</small></li>
<li><a href="https://etbe.coker.com.au/2026/03/06/links-march-2026/" rel="bookmark" title="Links March 2026">Links March 2026</a> <small>Krebs has an interesting article about the Kimwolf botnet which...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://etbe.coker.com.au/2026/05/31/links-may-2026/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6161</post-id>	</item>
		<item>
		<title>Zswap</title>
		<link>https://etbe.coker.com.au/2026/05/29/zswap/</link>
					<comments>https://etbe.coker.com.au/2026/05/29/zswap/#respond</comments>
		
		<dc:creator><![CDATA[etbe]]></dc:creator>
		<pubDate>Fri, 29 May 2026 11:59:08 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://etbe.coker.com.au/?p=6141</guid>

					<description><![CDATA[Zswap vs Zram Last year I blogged about using Zram for VMs [1]. That setup is still working well for VMs and for phones and laptops with no swap device. I have just read Chris Down&#8217;s insightful blog post about Zswap vs Zram [2] which convinced me to setup Zswap on some systems. I have [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>Zswap vs Zram</h2>
<p>Last year I blogged about <a href="https://etbe.coker.com.au/2025/08/27/zram-vms/">using Zram for VMs [1]</a>. That setup is still working well for VMs and for phones and laptops with no swap device.</p>
<p>I have just read <a href="https://chrisdown.name/2026/03/24/zswap-vs-zram-when-to-use-what.html">Chris Down&#8217;s insightful blog post about Zswap vs Zram [2]</a> which convinced me to setup Zswap on some systems. I have had some of the problems that were described in his blog post when trying to run Zram on workstation and server systems.</p>
<p>One limitation of zswap is that it doesn&#8217;t allow specifying the compression level. For zram I can put the following in <b>/etc/systemd/zram-generator.conf</b> to set the zstd compression level (this works well on my Thinkpad X1 Carbon Gen6):</p>
<pre>[zram0]
compression-algorithm=zstd(level=10)</pre>
<p>For the BTRFS filesystem I can put &#8220;<b>compress=zstd:13</b>&#8221; in the mount options to specify the compression level. They really should support different compression levels in zswap. The ideal compression level depends on the speed of the CPU and new CPUs keep getting faster.</p>
<h2>Setup</h2>
<p>The documentation says to use something like the following on the kernel command-line to enable zswap:</p>
<pre>zswap.enabled=1 zswap.compressor=zstd zswap.max_pool_percent=20 zswap.shrinker_enabled=1</pre>
<p>The max_pool_percent=20 setting is the default which means to use up to 20% of system RAM for compressed data. I&#8217;ve seen documentation sugesting up to 50% which seems a little excessive.</p>
<p>Note that a lot of documentation says to use <b>zswap.zpool=z3fold</b>, but <a href="https://www.phoronix.com/news/Linux-Z3fold-Removal-Coming">z3fold is going to be removed and zsmalloc (the default) is recommended [3]</a>.</p>
<p>There is documentation about changing the compression algorithm via command line parameters, on Debian only lzo is linked in to the kernel and zstd (my preferred option) is a module so the kernel command line can&#8217;t be used to set zstd, but the following command works:</p>
<pre>echo zstd &gt; /sys/module/zswap/parameters/compressor</pre>
<p>The shrinker_enabled option is to allow the kernel to evict cold pages without waiting for memory pressure.</p>
<p>You can enable zswap without rebooting by running commands like the following. You could even put them in <b>/etc/rc.local</b> or something, but I think putting it in the kernel command line is a good idea as it makes it obvious to the next sysadmin what is happening.</p>
<pre>echo 1 &gt; /sys/module/zswap/parameters/enabled
echo zstd &gt; /sys/module/zswap/parameters/compressor
echo 1 &gt; /sys/module/zswap/parameters/shrinker_enabled</pre>
<h2>Monitoring</h2>
<p>The following command is documented as a way of finding out what zswap is doing:</p>
<pre># grep -r . /sys/kernel/debug/zswap/
/sys/kernel/debug/zswap/stored_pages:262541
/sys/kernel/debug/zswap/pool_total_size:455266304
/sys/kernel/debug/zswap/written_back_pages:384
/sys/kernel/debug/zswap/reject_compress_poor:0
/sys/kernel/debug/zswap/reject_compress_fail:160911
/sys/kernel/debug/zswap/reject_kmemcache_fail:0
/sys/kernel/debug/zswap/reject_alloc_fail:0
/sys/kernel/debug/zswap/reject_reclaim_fail:0
/sys/kernel/debug/zswap/pool_limit_hit:0</pre>
<p>The following command gives the zswap compression level which gives a result of 2.36 for this example:</p>
<pre>echo "scale=2; " $(&lt;/sys/kernel/debug/zswap/stored_pages) " * $(getconf PAGESIZE) /" $(&lt;/sys/kernel/debug/zswap/pool_total_size) | bc</pre>
<p>This table documents my current understanding of the debug values. The difference between reject_compress_fail and reject_compress_poor isn&#8217;t clear in a lot of the documentation, even reading the source didn&#8217;t make it easy to understand.</p>
<table>
<tr>
<th>File</th>
<th>Meaning (LC is lifetime count)</th>
</tr>
<tr>
<td>pool_limit_hit</td>
<td>LC pool limit hit and pages are forced to the swap partition</td>
</tr>
<tr>
<td>pool_total_size</td>
<td>RAM used for zswap data</td>
</tr>
<tr>
<td>reject_alloc_fail</td>
<td>LC can&#8217;t allocate memory because max_pool_percent has been reached</td>
</tr>
<tr>
<td>reject_compress_fail</td>
<td>LC of pages with a compression algorithm failure so go straight to swap partition</td>
</tr>
<tr>
<td>reject_compress_poor</td>
<td>LC of pages that can&#8217;t compress so go straight to swap partition</td>
</tr>
<tr>
<td>reject_kmemcache_fail</td>
<td>LC kernel malloc failure (serious problem?)</td>
</tr>
<tr>
<td>reject_reclaim_fail</td>
<td>LC failure to move a page from compressed RAM to disk &#8211; serious problem!</td>
</tr>
<tr>
<td>stored_pages</td>
<td>Swapped pages stored by zswap</td>
</tr>
<tr>
<td>written_back_pages</td>
<td>LC of pages written back to swap partition from zswap</td>
</tr>
</table>
<p>All of this is not nearly as easy to understand as the following command for zram:</p>
<pre># zramctl 
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd          7.7G  2.1G  375M  386M       4 [SWAP]</pre>
<h2>Debian Wiki</h2>
<p>The <a href="https://wiki.debian.org/Zswap">Debian Wiki page about Zswap is very brief [4]</a> and needs more description about this, I think a lot of Debian users will use zram instead of zswap because setting up zram is just a single apt command. I&#8217;m not planning to immediately add to that wiki page because I&#8217;m not an expert on this, I would appreciate comments on this blog post from others who have got zswap working. I will update the wiki if others report matching experiences to mine.</p>
<h2>Conclusion</h2>
<p>I&#8217;m now using zswap on a few systems including my main home workstation which had performed poorly with zram and a swap device in the past. If that goes well I&#8217;ll put it on other systems.</p>
<p>I wrote the following shell script to display zswap stats, consider it GPL if you want to use it:</p>
<pre>#!/bin/bash

if [ ! -f /sys/kernel/debug/zswap/stored_pages ]; then
  echo "ZSwap not enabled"
  exit 0
fi
PAGES=$(&lt;/sys/kernel/debug/zswap/stored_pages)
PAGESIZE=$(getconf PAGESIZE)
RAM=$(echo "$PAGESIZE * " $(getconf _PHYS_PAGES) | bc)
POOL=$(&lt;/sys/kernel/debug/zswap/pool_total_size)
if [ "$POOL" == "0" ]; then
  echo "ZSwap not used yet"
  exit 0
fi
COMP=$(&lt;/sys/module/zswap/parameters/compressor)
echo -n "$COMP compression ratio: "
echo "scale=2; $PAGES * $PAGESIZE / $POOL" | bc
echo -n "RAM%: "
echo "100 * $POOL / $RAM" | bc</pre>
<ul>
<li>[1]<a href="https://etbe.coker.com.au/2025/08/27/zram-vms/"> https://etbe.coker.com.au/2025/08/27/zram-vms/</a></li>
<li>[2]<a href="https://chrisdown.name/2026/03/24/zswap-vs-zram-when-to-use-what.html"> https://tinyurl.com/2bhknn7e</a></li>
<li>[3]<a href="https://www.phoronix.com/news/Linux-Z3fold-Removal-Coming"> https://tinyurl.com/2bxvj3pq</a></li>
<li>[4]<a href="https://wiki.debian.org/Zswap"> https://wiki.debian.org/Zswap</a></li>
</ul>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Related posts:</p><ol>
<li><a href="https://etbe.coker.com.au/2025/08/27/zram-vms/" rel="bookmark" title="ZRAM and VMs">ZRAM and VMs</a> <small>I&#8217;ve just started using zram for swap on VMs. The...</small></li>
<li><a href="https://etbe.coker.com.au/2020/06/06/comparing-compression/" rel="bookmark" title="Comparing Compression">Comparing Compression</a> <small>I just did a quick test of different compression options...</small></li>
<li><a href="https://etbe.coker.com.au/2020/12/04/zfs-2-release/" rel="bookmark" title="ZFS 2.0.0 Released">ZFS 2.0.0 Released</a> <small>Version 2.0 of ZFS has been released, it&#8217;s now known...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://etbe.coker.com.au/2026/05/29/zswap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6141</post-id>	</item>
		<item>
		<title>Debian SE Linux and PinTheft</title>
		<link>https://etbe.coker.com.au/2026/05/24/debian-selinux-pintheft/</link>
					<comments>https://etbe.coker.com.au/2026/05/24/debian-selinux-pintheft/#comments</comments>
		
		<dc:creator><![CDATA[etbe]]></dc:creator>
		<pubDate>Sun, 24 May 2026 10:32:57 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://etbe.coker.com.au/?p=6133</guid>

					<description><![CDATA[We have a new Linux exploit called PinTheft [1]. I did some tests of it with Debian kernel 6.12.74+deb13+1-amd64. user_t When I run the exploit as user_t I see the following in the audit log: type=PROCTITLE msg=audit(1779615031.043:15540): proctitle="./exp" type=AVC msg=audit(1779615031.043:15541): avc: denied { create } for pid=1360 comm="exp" scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=rds_socket permissive=0 type=SYSCALL msg=audit(1779615031.043:15541): arch=c000003e [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>We have <a href="https://github.com/v12-security/pocs/tree/main/pintheft">a new Linux exploit called PinTheft [1]</a>. I did some tests of it with Debian kernel <b>6.12.74+deb13+1-amd64</b>.</p>
<h2>user_t</h2>
<p>When I run the exploit as user_t I see the following in the audit log:</p>
<pre>type=PROCTITLE msg=audit(1779615031.043:15540): proctitle="./exp"
type=AVC msg=audit(1779615031.043:15541): avc:  denied  { create } for  pid=1360 comm="exp" scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=rds_socket permissive=0
type=SYSCALL msg=audit(1779615031.043:15541): arch=c000003e syscall=41 success=no exit=-13 a0=15 a1=5 a2=0 a3=0 items=0 ppid=879 pid=1360 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=1 comm="exp" exe="/home/test/b/pocs/pintheft/exp" subj=user_u:user_r:user_t:s0 key=(null)ARCH=x86_64 SYSCALL=socket AUID="test" UID="test" GID="test" EUID="test" SUID="test" FSUID="test" EGID="test" SGID="test" FSGID="test"</pre>
<p>The last of the output of running the exploit is the following:</p>
<pre>[-] only stole 0/1024 refs — may not be enough
[-] too few stolen refs, aborting
[-] attempt 5 failed, retrying...
[-] all 5 attempts failed</pre>
<h2>unconfined_t</h2>
<p>When I run it as unconfined_t it gave the same output and stracing it had many of the following:</p>
<pre>socket(AF_RDS, SOCK_SEQPACKET, 0)       = -1 EAFNOSUPPORT (Address family not supported by protocol)</pre>
<p>After I ran &#8220;<b>modprobe rds</b>&#8221; the exploit worked as unconfined_t with the following output:</p>
<pre>[*] verifying page cache overwrite...
[*] page cache page 0 AFTER overwrite (our shellcode) (129 bytes):
  0000:  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
  0010:  03 00 3e 00 01 00 00 00  68 00 00 00 00 00 00 00  |..>.....h.......|
  0020:  38 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |8...............|
  0030:  00 00 00 00 40 00 38 00  01 00 00 00 05 00 00 00  |....@.8.........|
  0040:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
  0050:  2f 62 69 6e 2f 73 68 00  81 00 00 00 00 00 00 00  |/bin/sh.........|
  0060:  81 00 00 00 00 00 00 00  31 ff b0 69 0f 05 48 8d  |........1..i..H.|
  0070:  3d db ff ff ff 6a 00 57  48 89 e6 31 d2 b0 3b 0f  |=....j.WH..1..;.|
  0080:  05                                                |.|

[+] verification PASSED — page cache overwritten with SHELL_ELF
[+] executing /usr/bin/su (now contains setuid(0) + execve /bin/sh)...

=== RESTORE: sudo cp /tmp/.backup_su_13294 /usr/bin/su && sudo chmod u+s /usr/bin/su ===
# </pre>
<h2>Conclusion</h2>
<p>SE Linux in a &#8220;strict&#8221; configuration stops this exploit.</p>
<p>The test VM is running Debian/Testing, I haven&#8217;t bothered investigating whether it&#8217;s a default setting for Debian to not load the <b>rds</b> module or whether it was some change that I made either directly or indirectly. Security via SE Linux is of more interest to me than security via controlling module load.</p>
<ul>
<li><a href="https://github.com/v12-security/pocs/tree/main/pintheft"> https://github.com/v12-security/pocs/tree/main/pintheft</a></li>
</ul>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>Related posts:</p><ol>
<li><a href="https://etbe.coker.com.au/2026/05/15/debian-selinux-ssh-keysign-pwn/" rel="bookmark" title="Debian SE Linux and ssh-keysign-pwn">Debian SE Linux and ssh-keysign-pwn</a> <small>I just tested out the ssh-keysign-pwn exploit [1] on Debian...</small></li>
<li><a href="https://etbe.coker.com.au/2026/05/04/copy-fail-on-debian-and-se-linux/" rel="bookmark" title="Copy Fail on Debian and SE Linux">Copy Fail on Debian and SE Linux</a> <small>I have just learned of the Copy Fail kernel vulnerability...</small></li>
<li><a href="https://etbe.coker.com.au/2026/05/08/dirty-frag-on-debian-and-se-linux/" rel="bookmark" title="Dirty Frag on Debian and SE Linux">Dirty Frag on Debian and SE Linux</a> <small>Hot on the heels of the Copy Fail vulnerability [1]...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://etbe.coker.com.au/2026/05/24/debian-selinux-pintheft/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6133</post-id>	</item>
	</channel>
</rss>
