DEClaser 1152

Feeling a bit nostalgic right now that I had a DEClaser 1152 postscript laser printer left at the family business. It was liquidated when the business relocated. I was given a terse warning by an ex-co-worker to come collect things before the liquidation, but I was dealing with a newborn at the time, and didn’t give it much thought.

Continue reading DEClaser 1152

Farewell Skolem, the PIII packet-pusher

Skolem was a Pentium III mobile with 128MiB RAM, a 20GiB travelstar HD, and a dock! The dock was important since the LCD was completely shot, and it had two PCI slots (with Lite-on tulip clones) which enabled routing duties. Skolem was my router for many years, taking over after my Ultra 5 started failing, and even survived a DSL to cable ISP change. Continue reading Farewell Skolem, the PIII packet-pusher

coalescing the VMs

I got a Romley (dual e5-2670 Jaketowns) last November with the plan to pull in the VMs from the three Xen hosts I currently run. I’ve named it “Luxor.” It idles at around 150W, which should save me some power bill, and even though it only currently has 1TB of mirrored storage, thin LVM provisioning should allow me to stretch that a bit. It’s easily the fastest system in my house now, with the possible exception of my wife’s haswell macbook pro for single-threaded performance.

Luxor has 96GiB [now 128GiB] of memory. I think this may exceed the combined sum of all other systems I have in the house. I figured that the price of the RAM alone justified the purchase. Kismet. Looking at the memory configuration, I have six 8GiB DIMMS per socket, but the uneven DIMMs-per-channel prevents optimal interleaving across the four channels. Adding two identical DIMMs or moving two DIMMs from one socket to another should alleviate this. (I doubt it’s causing performance regressions, but given that the DIMMs are cheap and available and I plan on keeping this machine around until it becomes uneconomical to run (or past that point if history is an indicator), DIMMs to expand it to 128GiB should be arriving soon.

In mid-December, the first olde sun x2200m2 opteron (“Anaximander”) had its two VMs migrated and was shut down. A second x2200m2 (“Anaximenes,” which hosts the bulk of my infrastructure, including this site,) remains. While writing this post, a phenom II x2 545 (“Pythagoras”), had its 2TB NFS/CIFS storage migrated to my FreeBSD storage server (“Memphis”) along with some pkgsrc build VMs and secondary internal services.

Bootloader barf-bag for x86 is still in full effect. I couldn’t figure out how to PXE without booting the system in legacy BIOS mode, and I gave up trying to get the Ubuntu installer to do a GPT layout, let alone boot it. I figure I can migrate LVM volumes to new disk(s) on GPT-backed disks, install EFI grub, switch system to EFI mode, and Bob’s your uncle. (He’s my brother-in-law, but close enough.) At least that’s the plan.

The VMs on Anaximenes have been a little trickier to move, since I need to make sure I’m not creating any circular dependencies between infrastructure VMs and being able to boot Luxor itself. Can we start VMs without DHCP and DNS being up, for instance?

Systemd is a huge PITA, and isn’t able to shut down VMs cleanly, even after fiddling with the unit files to add some dependency ordering. Current theory is that it’s killing off underlying qemu instances so the VMs essentially get stuck. Running the shutdown script manually works fine and the VMs come down cleanly.

Time to get rid of my TiVo series 1

Around the turn of the millennium, my now wife and I plunked down our hard-earned money and purchased a Philips TiVo series 1 with lifetime service. We had a friend with a ReplayTV, but the TiVo interface won us over, and we enjoyed the TiVo life through roughly a decade thanks to a dual 128GB hard drive upgrade and silicon dust cache card. The updated hard drives eventually died, and we reverted back to the original 30GB drive for a few months before our directv receiver was replaced with one that had DVR capability. The directv DVR UI sucked, but it was easier than stringing IR blasters and serial control converters together to keep the TiVo going, so the TiVo ended up being neglected.

I had cozy visions of my TiVo recording kids shows from a DTV converter box as part of my basement retro media station. TiVo dropped support for series 1 guide listings in 2016. This obviously had no practical impact on me, but it still makes me a little sad.

So long, TiVo. You were a great box.

modems added to the ice floe

I added a couple telebit trailblazers to the ice floe a couple days ago, and tonight my US Robotics courier HST.

My father purchased a Kyocera 1200 bps modem for our family’s Leading Edge model D, with the hope that my mom could use it for her transcription and word-processing business. I used it to call BBSes. It took at least a year before I figured out how to get file transfers working with the included Microsoft Access comm program. (Not Microsoft Access the database — Access the comm program!) I downloaded Procomm with the Xmodem-checksum protocol, then later Telix (with Zmodem).

I saved my paper route money to buy a 2400bps modem. I did ANSI. I ran a BBS. I saved more paper route money and got at 14.4k courier HST through a local sysop of a large multi-line BBS. In the early 90s it was cheaper for me to call across the country in the middle of the night with a budget long-distance provider than to call to the more remote areas of my own area code, but that’s the subject of another post…

When I arrived in college, the sysadmin there knew I had run a BBS, beckoned me to the the sub-basement, and handed me a Xylogics terminal server. “You can make this work, right?” I first configured it to replace the old Cisco STS-10, providing direct text logins for students and alums. I opened up PPP connections a couple months later, and wrote an awk script to parse the log files and identify freeloaders. As a staff member, I of course never showed up on the freeloader list, even though I left my connection up 24/7, phone line connection permitting.

During a year break from college, I was employed at a large regional ISP as a system operator, junior to the sysadmins. I did the grunt-work of hard-resetting (yanking and re-seating) failing modems from the 800+ lines in our local POP, and directing our field guy to busy-out or replace modems that appeared to be broken at the frame-relay-connected remote POPs.

A couple years later I replaced my nailed-up V34 modem with a DSL connection, first CAP and later DMT. When the telco started interfering with their own DSL connections and the combination of video streaming and work-related VPN needs started outstripping DSL, I moved to a cablemodem.

I originally kept my modems with the intent of setting up a backup UUCP connection for my email, as I had provided others in college. Since moving jobs to corpoland, I no longer have control over a remote PSTN line, so can’t set up my own out-of-band UUCP connection. I no longer have a POTS line at home. I suspect that modems over VOIP do not fare well, although V.MOIP is supposed to address this. In any case, the sunset on modems designed to work over the PSTN has long since passed, and so it’s time to say goodbye.

I don’t even have another HST modem to dial in order to capture handshake audio, and a cursory search on the internet doesn’t reveal any such recordings. My HST has spent over a decade in a box, and the last time I fired it up, the NVRAM was completely shot, and it’s not like I have anywhere to dial anymore.

The option of simulating old tyme internet over a serial connection is always available by using a null modem cable. Latency will obviously be better, but it’s just a simulation. screeching handshake not included.

the kids have met spinning media

My children have met spinning media. I play games with them on my c64, so they know what floppy drives are. I play vinyl records for them. They have a small DVD collection of movies. Tonight we took apart a couple hard drives so I could show them the insides. They enjoy using screwdrivers.

First up was a full-height 1.6GB Seagate PA4E1B 5.25″ drive. We weren’t able to get the lid off, but they could see the drive arms and all the platters. Ten of them. Eighteen heads on the arm. (Later, with a hammer and screwdriver, I was able to get the lid off.)

We then moved to a 3.5″ 52MB Quantum Prodrive 52S. When the top of the drive came off, my daughter recognized the configuration of the head and arm over the platter. “It looks like a record,” she said. Two heads, and an optical detector for the tracks, rather than using servo tracks. I now wish I had fired it up and listened to it before disassembly, as I suspect it may have had a unique sound.

The largest drives I have now in my home datacenter are 3TB. MicroSD cards sold at the checkout lanes at my local supermarket can hold more data than the drives we disassembled in a fraction of the physical space, with orders of magnitude less power consumption. SSDs are catching up to spinning rust in capacity, and Intel’s recently announced non-volatile memory pushes densities even higher. It’s possible my kids will never have to delete data in their adult lives — data would get marked as trash, but would still technically available for retrieval “just in case” because the cost savings of actually reclaiming the space used by data will be negligible.

I had a Xerox 820-II CP/M machine with 8″ floppies that stored close to 1MB of data. My family had a PC with a 30MB hard drive, and I remember being in awe in the early 90s thinking about 1GB hard drives that cost around $1k. I bought a 179MB drive in high school with stipend money, and scrounged drives of various sizes throughout college. I don’t remember the first drive > 1GB that I owned — very few have survived. I vaguely recall a jump from hundreds of MB to tens of GB that happened in the early 2000s. All spinning media.

All slowly succumbing to mechanical wear-out, or more simply, obsolescence.

bye SGIs

last weekend I dropped off a stack of SGI challenges and an indy to my local recycler. there’s only so much that can be done with a 200MHz R4400 CPU these days. there’s also still some pmap bugs in NetBSD, so I never could complete a build of the world, although I did get some openssl numbers.

I never had these systems in production use, so there’s not a lot of emotional attachment. just the lost potential.

MIPS seems to be bare-bones these days. not even parity memory. I don’t get it. it was a serious workstation- and server-level CPU, and now it’s used for networking gear and more disturbingly for NAS boxes. (seriously, who would ever trust data to a storage subsystem that isn’t at least performing parity checks? yet most MIPS-based NAS boxes don’t have parity or ECC memory!?) MIPS was server-level in the early 90s. no longer.

here’s some dmesg and openssl benchmarks… photos later after I get them exported from raw.

I still like the SGI speckle finish and design. I’ll remember the indy’s fanfare when it was powered up. the electropaint screensaver that inspired xscreensaver’s stonerview. playing mp3 layer 2 files from an early music site… (can’t recall the name this late.) the lp account with no password. the awkwardness of IRIX. OK stopping before the bad memories surface.

here’s some dmesg.

Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.0 (GENERIC32_IP2x.201510122130Z)
total memory = 128 MB
(768 KB reserved for ARCS)
avail memory = 119 MB
timecounter: Timecounters tick every 10.000 msec
mainbus0 (root): SGI-IP22 [SGI, 690a313e], 1 processor
cpu0 at mainbus0: MIPS R4400 CPU (0x460) Rev. 6.0 with MIPS R4010 FPC Rev. 0.0
cpu0: 48 TLB entries, 16MB max page size
cpu0: 16KB/16B direct-mapped L1 instruction cache
cpu0: 16KB/16B direct-mapped write-back L1 data cache
cpu0: 1024KB/128B direct-mapped write-back L2 unified cache
int0 at mainbus0 addr 0x1fbd9880
int0: bus 100MHz, CPU 200MHz
imc0 at mainbus0 addr 0x1fa00000: revision 3
gio0 at imc0
newport0 at gio0: SGI NG1 (board revision 4, cmap revision 5, xmap revision 5, vc2 revision 0), depth 8
wsdisplay0 at newport0 kbdmux 1
wsmux1: connecting to wsdisplay0
hpc0 at gio0: SGI HPC3 (onboard)
zsc0 at hpc0 offset 0x59830
zstty0 at zsc0 channel 1 (console i/o)
zstty1 at zsc0 channel 0
pckbc0 at hpc0 offset 0x59840
sq0 at hpc0 offset 0x54000: SGI Seeq 80c03
sq0: Ethernet address 08:00:69:0a:31:3e
wdsc0 at hpc0 offset 0x44000: WD33C93B (20.0 MHz clock, BURST DMA, SCSI ID 0)
wdsc0: microcode revision 0x0d, Fast SCSI
scsibus0 at wdsc0: 8 targets, 8 luns per target
haltwo0 at hpc0 offset 0x58000: HAL2 revision 4.1.0
audio0 at haltwo0: half duplex, playback, capture
pi1ppc0 at hpc0 offset 0x59800
pi1ppc0: capabilities=0x8
ppbus0 at pi1ppc0
ppbus0: No IEEE1284 device found.
lpt0 at ppbus0: port mode = 0x1
panel0 at hpc0 offset 0x59850
dsclock0 at mainbus0 addr 0x1fbe0000
ioc0 at mainbus0 addr 0x1fbd9800: rev 0, machine Indy (Guinness), board rev 0
timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
timecounter: Timecounter "mips3_cp0_counter" frequency 100000000 Hz quality 100
scsibus0: waiting 2 seconds for devices to settle...
sd0 at scsibus0 target 1 lun 0:  disk fixed
sd0: 17518 MB, 10042 cyl, 12 head, 297 sec, 512 bytes/sect x 35877972 sectors
sd0: sync (100.00ns offset 12), 8-bit (10.000MB/s) transfers, tagged queueing
boot device: sd0
root on sd0a dumps on sd0b

and some openssl results:

OpenSSL 1.0.1p 9 Jul 2015
NetBSD 7.0
options:bn(32,32) md2(int) rc4(ptr,int) des(idx,cisc,16,long) aes(partial) idea(int) blowfish(ptr)
gcc version 4.8.4 (NetBSD nb2 20150115)
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2                 78.66k      178.98k      257.45k      290.53k      303.10k
mdc2               145.06k      218.49k      252.84k      263.22k      265.83k
md4                272.68k     1020.27k     3510.04k     8881.49k    15989.37k
md5                221.69k      829.48k     2735.18k     6375.68k    10435.90k
hmac(md5)          432.03k     1521.22k     4359.31k     8265.54k    11164.68k
sha1               226.51k      804.40k     2370.03k     4631.29k     6387.03k
rmd160             157.18k      555.69k     1615.45k     3064.52k     4192.54k
rc4               7713.16k     8239.91k     7964.19k     7774.18k     8311.75k
des cbc           1339.39k     1451.10k     1482.15k     1495.11k     1388.01k
des ede3           442.20k      453.40k      452.86k      452.21k      503.50k
idea cbc          1772.67k     1894.70k     1922.57k     1920.86k     1916.00k
seed cbc          1880.76k     2062.38k     2107.36k     2091.69k     2102.61k
rc2 cbc           1549.19k     1627.91k     1639.00k     1637.72k     1641.15k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00
blowfish cbc      3121.18k     3362.69k     3491.58k     3559.60k     3588.10k
cast cbc          2230.75k     2412.86k     2450.63k     2468.83k     2454.86k
aes-128 cbc       2528.06k     2744.85k     2819.34k     2849.51k     2852.23k
aes-192 cbc       2141.74k     2331.49k     2441.50k     2459.99k     2460.35k
aes-256 cbc       1906.51k     2058.35k     2139.82k     2156.59k     2155.50k
camellia-128 cbc     1649.84k     2178.77k     2367.96k     2438.76k     2427.26k
camellia-192 cbc     1389.08k     1737.42k     1857.25k     1886.21k     1884.98k
camellia-256 cbc     1375.05k     1733.15k     1853.87k     1892.86k     1887.72k
sha256             357.50k      866.70k     1587.03k     2004.45k     2181.78k
sha512             140.38k      561.43k      904.85k     1298.90k     1482.75k
whirlpool          109.76k      224.54k      365.65k      435.29k      459.95k
aes-128 ige       2238.29k     2535.68k     2638.35k     2672.33k     2672.61k
aes-192 ige       1964.70k     2209.11k     2280.95k     2303.49k     2335.83k
aes-256 ige       1848.34k     1985.61k     2037.47k     2040.78k     2056.19k
ghash             2965.22k     3198.88k     3252.14k     3205.57k     3271.32k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.054054s 0.004529s     18.5    220.8
rsa 1024 bits 0.291429s 0.014821s      3.4     67.5
rsa 2048 bits 1.931667s 0.053209s      0.5     18.8
rsa 4096 bits 12.870000s 0.198824s      0.1      5.0
                  sign    verify    sign/s verify/s
dsa  512 bits 0.045571s 0.055414s     21.9     18.0
dsa 1024 bits 0.149552s 0.175088s      6.7      5.7
dsa 2048 bits 0.525263s 0.648750s      1.9      1.5
                              sign    verify    sign/s verify/s
 160 bit ecdsa (secp160r1)   0.0152s   0.0746s     65.8     13.4
 192 bit ecdsa (nistp192)   0.0157s   0.0758s     63.7     13.2
 224 bit ecdsa (nistp224)   0.0216s   0.1059s     46.2      9.4
 256 bit ecdsa (nistp256)   0.0325s   0.1772s     30.7      5.6
 384 bit ecdsa (nistp384)   0.0693s   0.3858s     14.4      2.6
 521 bit ecdsa (nistp521)   0.1998s   1.0970s      5.0      0.9
 163 bit ecdsa (nistk163)   0.0176s   0.0755s     56.9     13.2
 233 bit ecdsa (nistk233)   0.0373s   0.1507s     26.8      6.6
 283 bit ecdsa (nistk283)   0.0567s   0.2668s     17.6      3.7
 409 bit ecdsa (nistk409)   0.2597s   0.6200s      3.8      1.6
 571 bit ecdsa (nistk571)   0.3654s   1.4271s      2.7      0.7
 163 bit ecdsa (nistb163)   0.0172s   0.0820s     58.1     12.2
 233 bit ecdsa (nistb233)   0.0368s   0.1602s     27.2      6.2
 283 bit ecdsa (nistb283)   0.0566s   0.2976s     17.7      3.4
 409 bit ecdsa (nistb409)   0.1548s   0.7013s      6.5      1.4
 571 bit ecdsa (nistb571)   0.4786s   1.6467s      2.1      0.6
                              op      op/s
 160 bit ecdh (secp160r1)   0.0637s     15.7
 192 bit ecdh (nistp192)   0.0640s     15.6
 224 bit ecdh (nistp224)   0.0917s     10.9
 256 bit ecdh (nistp256)   0.1524s      6.6
 384 bit ecdh (nistp384)   0.3209s      3.1
 521 bit ecdh (nistp521)   0.9000s      1.1
 163 bit ecdh (nistk163)   0.0366s     27.3
 233 bit ecdh (nistk233)   0.0709s     14.1
 283 bit ecdh (nistk283)   0.1320s      7.6
 409 bit ecdh (nistk409)   0.3094s      3.2
 571 bit ecdh (nistk571)   0.7113s      1.4
 163 bit ecdh (nistb163)   0.0411s     24.3
 233 bit ecdh (nistb233)   0.0795s     12.6
 283 bit ecdh (nistb283)   0.1469s      6.8
 409 bit ecdh (nistb409)   0.3514s      2.8
 571 bit ecdh (nistb571)   0.8185s      1.2