Hobart is currently certified at Journeyer level.

Name: Jon Bailey
Member since: 2000-12-28 17:26:40
Last Login: 2009-06-05 13:16:23

FOAF RDF Share This

Homepage: http://jb.org/


"The best thing for being sad," replied Merlin, beginning to puff and blow, "is to learn something. That's the only thing that never fails. You may grow old and trembling in your anatomies, you may lie awake at night listening to the disorder of your veins, you may miss your only love, you may see the world about you devastated by evil lunatics, or know your honour trampled in the sewers of baser minds. There is only one thing for it then -- to learn. Learn why the world wags and what wags it. That is the only thing which the mind can never exhaust, never alienate, never be tortured by, never fear or distrust, and never dream of regretting. Learning is the only thing for you. Look what a lot of things there are to learn." -- T.H. White, "The Once and Future King"

Recent blog entries by Hobart

Syndication: RSS 2.0

Cgroups example - limiting memory to control disk writes (Debian)

I ran into a problem with an overactive process that left the rest of the system running slow. nice(1) did nothing to solve it, neither did ionice(1) rescheduling it to "Idle". If you run into something similar, cgroups may help

cgroups ("Control groups") were developed at Google around 2006 and showed up in Linux around 2.6.24. Searching for cgroups examples largely leads one to the RHEL Resource Management Guide. (Link goes to the latest version, most Google searches point to older copies.)

In my case, I had a long running (>1hr) process that wrote several hundred GB of output.

I looked at the processes' speed by piping it through pv(1), and also looked at top(1), iotop(1), and

$ watch cat /proc/meminfo  (watching the Dirty: line)

The process was doing buffered writes to disk, which was good (keeping the disk continuously fed for best throughput) but was filling up huge amounts of cache (1~2 dozen GB of Dirty pages.) When I paused it, sync(1) took over 5min to complete.

Debian 8.0 (Jessie) has cgroups by default but, the memory type are disabled by default.

# apt-get install cgroup-tools
# vi /etc/default/grub

(Add  cgroup_enable=memory  to kernel boot parameters, run  update-grub2  and reboot.)

# cgcreate -g memory:/foo
# echo 64M > /sys/fs/cgroup/memory/foo/memory.limit_in_bytes
# cgexec -g memory:/foo bash
(your task here)

The cgcreate(1) command is a fancy equivalent to doing a mkdir in the cgroup partition, which automatically is populated with the appropriate control files. Debian 8's kernel has both cgroup and cgroup2 support, but as systemd(8) is using version 1 and it appears the two cannot be used concurrently, that's what I used.


  • Fast throughput - better than piping through dd oflag=direct or dd oflag=dsync
  • Solved the system-wide performance hit
  • Everything ran nicely and the watching meminfo (as above) showed dirty pages were being regularly flushed


  • Your task might be hit by the OOM killer.
  • Your task can have malloc(3) calls fail, which makes most tools bail out.

This feels like a hack solution, but since cgroups can't limit just write buffered memory yet, and using cgroups actual disk-write limiter (blkio.throttle.write_bps_device) would require the above-mentioned slow dd(1) (which ran at 30% of the speed, at best) and none of the other tools actually worked, I'm sharing it. YMMV - and I'd love to hear of other solutions that actually work for people. A good test program to run is:

$ pv -S -s 80g < /dev/zero > zeroes.dat
(write 80GB to a file, with progress bar and live throughput details)

Syndicated 2016-07-25 07:29:17 from jon's blog

Microsoft Outlook hangs at "Loading profile..." (solved)


  • Outlook hangs at blue splash screen with "Loading profile..." and never opens.
Software involved:
  • Win 10 64-bit 10.0.10240
  • Office 2016 64-bit 16.0.4229.1029
  • IMAP account hosted with GoDaddy (imap.secureserver.net) - only item in profile (.OST backed, default settings)
Solutions that did not work:
  • Creating a new Outlook profile
  • Clearing out all MAPI config from the registry (renaming HKLM\SOFTWARE\Microsoft\Windows Messaging Subsystem )+reboot
  • Deleting all Outlook folders under %USERPROFILE% dir
  • Renaming out all Outlook registry settings under HKCU
  • Doing a full repair of Office 2016
  • Setting up under a fresh user account
  • Starting Outlook with /SAFE parameter
  • Disabling IPv6 (create DWORD HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents set to 0xffffffff)+reboot
  • Clearing out Windows Search (ControlPanel->IndexingOptions, unchecking Outlook, 'Delete+rebuild' on advanced tab)
Solution that did work:
  • Disconnecting the network, then reconnecting when Outlook was open.
  • Launch Outlook, wait for blue splash screen stuck at "Loading profile..."
  • Launch an Administrator command prompt. (Start, type CMD, press Ctrl+Shift+Enter, say Yes.)
  • IPCONFIG /release at command prompt.
  • Outlook opened up
  • IPCONFIG /renew at command prompt.
  • Clicked "Send/Receive All Folders" - sync completed normally.

Syndicated 2015-10-15 23:44:50 from jon's blog

4-disk raidz vs 3-disk raidz vs 2-disk mirror

Benchmarked three different volumes (ZFS on Linux) from a Windows client.

Conclusion: At the mere speed of Gigabit Ethernet, there's no appreciable speed difference.

Syndicated 2015-10-01 21:28:52 from jon's blog

"Stupid, STUPID Unix creatures!"

tl;dr: Wrap your shell script loops in (subshells)

ProTip: A task running in a shell script's 'for' loop that are paused by signal TSTP (that is, hitting ^Z) and restarted (with 'fg' or '%') will keep going, but the loop will have been broken and not continue (bash behavior) or the command sequence will continue as though it had completed ('dash' and probably other Bourne shells behavior). I've tested in bash and dash.

This doesn't work when interrupted by ^Z:

$ for X in 1 2 3; echo Iteration $X; sleep 5; echo Iteration $X complete; done

This does:

$ (for X in 1 2 3; echo Iteration $X; sleep 5; echo Iteration $X complete; done)

This sort of thing doesn't happen often but when you're looping through commands that take ~6h to complete and find you've lost the output, it's frustrating. :)

Syndicated 2015-10-01 13:38:13 from jon's blog

Atari 8-bit "Archimedes Spiral" demo - Found again!

Sometimes you stumble upon what you were looking for by accident ...

When I was 9 or 10 years old, I didn't have a modem, much less access to the Internet. The few computer magazines I had, I read over and over - and would have to type in games from program listings. I remembered typing in a BASIC program full of complicated math I didn't understand. The resulting program would take hours to run, but produced an impressive 3-D wireframe image. (With hidden line removal!)

7 years ago (mid-2008) I decided to poke around the Internet and ask in various places if anyone had seen it ... with no luck.

I had a bit of luck a year later, and posted my findings here on LiveJournal.

Today I was reading through some .PDFs of old Atari magazines, not even thinking of this, when lo-and-behold, there was the article. Hazzoo-huzzah! It turned out not to be MACE Journal or Compute, but a 1982 issue of ANALOG Computing - #7, the one with the awesome Blade-Runner inspired cover art. Many thanks to Charles Bachand, and editor Lee Pappas for the article!

I wonder if Charles is reachable... and if he remembers where he got the code for the demo... The image I found before (in a Commodore ad) appears in Compute! issue 12 from May 1981 ... the ad is from Micro Technology Unlimited ... and that same issue has a screen-dump utility by that company's employee, Martin J. Cohen, Ph.D. who is the author of their Keyword Graphics Package. Hmm! (Neat: in that issue he thanks Gregory Yob for help in part of his code!)

Those with too much time on their hands are encouraged to look at the issue on Internet Archive - A.N.A.L.O.G. Computing magazine, issue 7 (1982) pp60-61. (Thanks to Brewster Kahle, Jason Scott, and others for their work there!)

Analog_Computing_07_1982-p60 Analog_Computing_07_1982-p61
A.N.A.L.O.G. Computing magazine, issue 7 (1982) pp60-61
by Charles Bachand

This article contains a graphics program called "Archimedes Spiral". The program, although quite short, takes nearly three hours to run! This is definitely not a quick demo. (To produce the transparent version of the spiral, delete line 240.)(It still looks like a hat to me. Ed.)

110 REM 
130 REM 
140 GRAPHICS 8+16:SETCOLOR 2,0,0
150 XP=144:XR=4.71238905:XF=XR/XP
160 FOR ZI=-64 TO 64
170 ZT=ZI*2.25:ZS=ZT*ZT
180 XL=INT(SQR(20736-ZS)+0.5)
210 YY=(SIN(XT)+SIN(XT*3)*0.4)*56
220 X1=XI+ZI+160:Y1=90-YY+ZI
230 TRAP 250:COLOR 1:PLOT X1,Y1
240 COLOR 0:PLOT X1,Y1+1:DRAWTO X1,191
260 GOTO 260

It would be so much simpler if you could hand out a hardcopy of the graphics to demonstrate your prowess with the computer. Your friends will be doing cartwheels and going hazoo-huzzah over your printing expertise. (Hazoo-huzzah?! Ed.)

(Ed. Note: No one here at A.N.A.L.O.G is responsihle for Charlie's state of mind when he writes these non-tutorials. Just thought you people would like to know.)

Syndicated 2015-02-22 05:02:56 from jon's blog

410 older entries...


Hobart certified others as follows:

  • Hobart certified Hobart as Apprentice

Others have certified Hobart as follows:

  • Wazm certified Hobart as Journeyer
  • Hobart certified Hobart as Apprentice

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page