Contributed by jcr on from the supposedly-portable dept.
The staggering volume of hardware the developers bring to hackathons sometimes causes delays, raised eyebrows or pointed questions when going through customs on international flights. The customs officers are usually wondering, "What kind of person needs five laptops and a suitcase full of parts and peripherals on a vacation?"
Some of the systems hauled to hackathons are generally non-portable, large servers, or smaller embedded systems, but the majority of systems are various types of laptops, each with their own unique challenges and headaches. One of the most frequently asked questions is, "What is a good laptop for running OpenBSD?" Although there have been countless opinions voiced in the mailing list archives, there will never be a "correct" opinion. Requirements and preferences will always vary from person to person and situation to situation, so defining your personal requirements and preferences is a good first step. There is the obvious question of, "What do you plan to do with it?" but defining your own preferences and requirements involves a lot more questions where the answers are often trade-offs.
[c2k10] Article Series: 1 (more to follow)
- (Portability) Are you more concerned with how much weight you'll be lugging around through meetings, train stations and airports?
- (Battery Life) Are you more concerned with how long the battery will last?
- (Hardware Features) Are you more concerned with what you'll be able to do with the hardware?
- (Compute Power) Are you more concerned with how fast the system will be?
- (Usability) Are you more concerned with how readable/usable the screen is?
- (Software Support) Are you more concerned with whether or not the hardware is already supported by OpenBSD?
- (Openness) Are you more concerned with whether or not documentation is available for the hardware?
- (Price) Are you more concerned with how much your new laptop will cost?
There are lots of important questions, no universal answers, and lots of trade-offs. I was invited to the OpenBSD c2k10 Hackathon to do testing, and needed to buy hardware specifically for this purpose. How I went about picking a new portable system for use with OpenBSD may be useful to you even if your requirements are vastly different than my own.
The faster a system is, the sooner I can get stuff tested and the more stuff I can get tested. For some people, FAST is the most important requirement and the added costs pay off in the long run.
The different types of hardware in constant need of testing is fairly limitless but without the hardware, testing cannot be done. With most laptops, you generally cannot just add the card or widget you need to test, so getting as many widgets and features as possible already built-in is to your advantage.
Hardware vendors are either friendly or hostile towards open source. They either release documentation and firmware or they don't. Whenever feasible, I avoid buying from hostile companies and try to support the friendly companies with my purchases. Unfortunately, there are often times when you cannot fill other requirements and still avoid the unfriendly companies.
If I got a new system and all the hardware "Just Works" with OpenBSD, where's the fun in that? Many people enjoy the challenge of getting stuff working in OpenBSD, but of course, you might have a different definition of "fun" and that's your loss. ;)
Other than for the hackathon, I really did not "need" a new laptop. Lugging a desktop system up to Edmonton and back was feasible but certainly not preferable. A supposed "laptop" (or netbook, or tablet, or iPr0n, or marketing-buzzword-du-jour) should be, by definition, portable. My first supposedly portable system was one of the original "Compaq Portable" machines. It weighed 33 kg (73 lbs) and was designed by engineers who thought putting a handle on a refrigerator somehow makes it portable. Needless to say, this early experience has permanently tainted my idea of a "portable" system. Also, I usually work from home or in a lab, avoid commuting, seldom travel and mostly leave systems plugged in at one place. Very important preferences like easy portability, battery life and suspend/resume support are entirely out of scope for my uses but are still critically important considerations for others. In my situation, it makes more sense to have a more usable and larger screen, and just enjoy the extra exercise on the rare occasions when it actually needs to be moved.
My requirement of a very fast system means I'm pretty much doomed to be buying one of the more expensive "high-end" laptops. Though price is not a stated requirement in my list, it's still a huge consideration for me since the high-end laptops can be insanely expensive. Laptops tend to be fragile by comparison and they get moved around a lot, so buying a used laptop tends to be a risky proposition. The risk of used gear can be partially managed with factory refurbished equipment under warranty. None the less, many people will still prefer the higher costs of new equipment over risks of refurbished equipment, but at least there is a choice for those on a budget.
I am regularly accused of holding the patent on the "Cheap Bastard Gene Sequence" and for charging outrageous royalties on all bargain hunters, but this is nothing more than an unfair rumor... --actually, my rates are very reasonable. ;)
A bit more seriously, all of my personal systems were purchased broken, used or factory refurbished, along with a few given to me for free as junk. I'm reasonably good with trouble shooting and fixing electronics, all the way down to PCB rework when need be, so I lack the usual fear of stuff breaking. If you have the free time and enjoy repairing electronics, you can often save a bundle on great and reliable systems.
Unfortunately, I didn't have the budget to buy new gear and I didn't have the time to research, repair, redesign, and rebuild my way into a good laptop, so the best option was to buy something factory refurbished with a factory warranty. The *factory* warranty is important but not for the reason you might think. Though some manufacturers will sell their own refurbished equipment, this detracts from sales of new equipment, so they often have a subsidiary or partner handle selling most of their refurbished gear. This opens the door for endless scams where unscrupulous people claim to be selling factory refurbished gear, but are just selling used/abused/stolen gear with little or no warranty at all. There is nothing wrong with asking for the factory warranty information of the system up-front before a purchase and no legitimate seller of factory refurbished equipment will refuse to let you validate the warranty with the manufacturer. This makes for a great litmus test, and should help you steer clear of scams.
A lot of the fun of OpenBSD is getting new hardware working and improving support for it. A lot of people shy away from this sort of tinkering and would rather have everything on their system "Just Work" from the start. Without the people adding and testing support for the unsupported stuff, nothing would ever reach the "Just Works" status. One of the greatest things about the OpenBSD project is if you can't get something working on your own, someone may try to help you get it working as long as you're willing to help with the effort by testing patches and trying configurations. In this case of intentionally getting unsupported or under-supported hardware for test machines at the hackathon, this gives the advantages of both finding bugs, and adding or improving support very quickly. One of the reasons for this article is to show how even a "bad decision" on which laptop to buy (or something you got for free or from work) can still be just fine if you put in the required effort.
As mentioned above, it's difficult to find a high-end laptop these days that is not using nVidia chips. nVidia is not only unfriendly to open source development, they are actually hostile towards it and insist everyone uses their blob drivers. The nv(1) driver in X/xenocara was written by nVidia employees and is obfuscated as well as abandoned. It may partially work for a few nVidia graphics chipsets, but there are still many other undocumented and unsupported nVidia chipsets. If you want to avoid this kind of proprietary nonsense from nVidia and the headaches they cause, carefully read the specs of anything you are consider buying before you make a purchase.
In addition to the woes caused by nVidia, there are plenty of other hardware component vendors who are unfriendly towards open source. If you're after a well supported system, you'll need to find out what devices are inside of the various laptops on your list of potentials and check through the supported chipsets/devices for your desired platform. If you can get access to a demo model in a store for a moment or two, a bootable USB stick can be used to get a dmesg and it will show you the devices inside the machine if the vendor provided specs are lacking.
In general, people have fun with the stuff they want to tinker on at the hackathons, but I was asked specifically to help out with any and all testing as well as help out Jacob Meuser (jakemsr@) in any way with audio development. Keeping an eye on the source-changes@ and ports-changes@ mailing lists as well as talking with the developers gave me an idea of where there they are interested in hacking and what hardware/features I needed.
- Boot Subsystem
- Unsupported or problematic ACPI/AML/ASPM
- Unsupported or problematic AHCI
- Memory Subsystem
- Large memory support (bigmem)
- Disk Subsystem
- Disk alignment
- Filesystem performance
- Buffer cache
- ESATA hot-plug
- BluRay Support (Playback and Recording)
- Audio Subsystem
- Playback (chipsets, speakers, ...)
- Recording (chipsets, microphones, ...)
- Various types of discs (CD, DVD, BluRay, ...)
- Any and all audio widgets
- Video Subsystem
- Playback (display features)
- Recording (camera support)
- Any and all unsupported camera widgets
- Display Subsystem
- Graphics chipsets (friendly vendors like ATI)
- multi-head/multi-card/multi-GPU (CrossFireX)
- DisplayPort Output
- HDMI Output
- USB Subsystem
- Any and all unsupported USB widgets
- PCCard/ExpressCard Subsystem
- Any and all unsupported Card based widgets
- Network Subsystem
- Any and all unsupported wired network interfaces
- Any and all unsupported 802.11x wireless widgets
- Any and all unsupported cellular network devices
The above is an incomplete list but should give you an idea of the wide scope of hardware needed by the project developers and the kinds of stuff I needed to be prepared to test. There were also efforts afoot in porting OpenBSD to new platforms as well as requests for specific hardware like a SGI Origin 350 and specific HP laptops. Unfortunately, no one stepped up to support the project with these needed donations.
I obviously could not afford to buy enough hardware to support testing everything, but I did my best to pick out a system to support as much of it as possible. Some of the desirable hardware seemed next to impossible to find in a laptop form factor such as multi-GPU ATI CrossFireX support. Other desirable hardware like ESATA, DisplayPort, HDMI, bigmem, BluRay and similar are also tough to find in anything but the most recently built laptops.
Anything involving the testing of video playback, BluRay, or graphics requires having a very good screen and enough power to handle high resolutions. My preference towards larger screens was good, but this type of testing would require screens as large as possible. If you were testing this kind of stuff professionally, there is simply no way a laptop form factor could fit the needed screens or a powerful enough system to drive them properly. At present, the laptop market offers 17" screens running at 1920x1200 (1200p), and 18.4" screens running at 1920x1080 (1080p), so these would have to suffice for finding playback artifacts and similar issues. These are the monstrous laptops in the supposed "Desktop Replacement" portion of the market, and are far beyond what most people consider to be portable. Also, the battery life of these beasts tends to be very short, so they're not intended for people who plan to do most of their computing on the go.
The high-end x86-64 laptop market is mostly limited to processors made by a single manufacturer, namely Intel. It would be great if there were more choices and competition (AMD) but at present, the two fastest processors you can get in a laptop these days are both from Intel.
- Intel Core 2 QX9300 Processor Extreme Edition (4 Cores, 4 Threads, 12M Cache, 2.53 GHz, 1066 MHz FSB)
- Intel Core i7-940XM Processor Extreme Edition (4 Cores, 8 Threads, 8M Cache, 2.13GHz/3.33GHz, 1066 MHz FSB)
Though the max potential speed and thread counts are higher on the newer "Core i7" processors, they are not necessarily faster than the "Core 2" processors. It depends on the work load, and the Core i7 can create problems for test environments. The problem is there's no easy way to create repeatable test results when you have no idea if you're running on a real core or a fake core (Hyper Threading), and whether you're running on a core that is at full speed, or a core that is at retarded speed (Turbo Boost). As mentioned above, these features can be useful for finding esoteric timing bugs and race conditions, but if you need repeatable test metrics, you're pretty much stuffed. For this reason, I went with the "Core 2" processor, also I think very little of the whole fake-core/fake-speed nonsense Intel has been pushing in their recent products but that's beside the important reason of accurate, repeatable test results.
Another aspect of the decision is cache size. Cache is King. The more fast/close cache memory you have, the better the performance will be assuming you have the main memory bandwidth necessary to feed it. The upside of of a large cache is you can avoid more cache-misses (i.e. needed data/instructions are not in the cache and need to be fetched from main memory). The Front Side Bus speed and RAM speed are also important, as well as the supposed "Extreme" editions since the clocks are only unlocked on these processors. You might want to note that although the stated FSB speed is supposedly "only" 1066MHz, these processors actually support faster FSB speeds through over-clocking. Though over-clocking is usually the realm of gamers (and idiots), being able to control the clock speed (increase or decrease) can be very advantageous in test environments when trying to isolate bugs.
Once you're past the questions of processors, cache and main memory bandwidth, the next big issues to address for a FAST system are bus types/speeds and the speed of the disk subsystem. On laptops you are pretty much stuck with the type of disk subsystem the vendor decided to implement, and these days it typically means a SATA 3.0 GiBit/s chipset of some sort. Some laptops allow for two hard drives and also the SATA chipset may have support for various types of ATA, AHCI, or RAID functionality. The important considerations are how many disks can you stuff in the laptop, and what kind of disks you use. I decided on a system allowing two disks, and used SSD drives.
To Be Continued...
(Comments are closed)