Performance Tuning and Configuration Management Go Hand In Hand

This is post #3 in my December 2013 series about Linux Virtual Machine Performance Tuning. For more, please see the tag “Linux VM Performance Tuning.” I’ve really become a fan of configuration management tools like Chef and Puppet. Those types of tools help keep my systems in sync, help enforce standards I set for my systems, and help me rapidly deploy new systems that look exactly like my existing systems. When I’m doing performance testing & tuning these aspects are helpful. It’s easy to deploy a new virtual machine that looks exactly like the production VMs you have. Tuning is all about making a lot of little changes and seeing what they do, so by building test systems from the …

Read More

One Workload Per Virtual Machine

This is post #2 in my December 2013 series about Linux Virtual Machine Performance Tuning. For more, please see the tag “Linux VM Performance Tuning.” Back when the computing world was built on bare metal we often tried to squeeze more than one workload on a physical machine. We did this to save money. Servers are expensive so we wanted to make the most of each one. What we didn’t account for was how complicated things could get. Applications fought with each other over system libraries and DLLs. Security was complicated. And, most relevant to this series, performance tuning became this multivariate dance involving resource limits and other arcane system witchcraft. In the end we saved a little money on …

Read More

For The Best Performance Use a Recent Operating System and a Recent Hypervisor

This is post #1 in my December 2013 series about Linux Virtual Machine Performance Tuning. For more, please see the tag “Linux VM Performance Tuning.” Just like in construction, performance tuning is most effective when you have a good foundation. If the underpinnings of your efforts are weak you won’t be able to build a skyscraper, just a small office building. While that’s still better than nothing, there is often a lot to be gained by using the newest versions of your OS & hypervisor of choice. Some quick examples: Windows Server 2012 R2 added Virtual Receive-side Scaling, which allows the load from network traffic to be processed by multiple virtual CPUs. VMware vSphere 5.5 added support for latency-sensitive VMs, …

Read More

Preparing Linux Template VMs

Dan over at Bashing Linux has a good post on what he does to prep his template VMs for use with Puppet. He’s inspired me to share how I prepare my Linux VMs to become a template. He’s got a few steps I don’t have, mainly to prep for Puppet, and I have a few steps he doesn’t have. One big difference is that I don’t prepare my template images for a particular configuration management system, but instead bootstrap them once they’re deployed. Why? I use my templates for a variety of things, and sometimes the people who end up with the VMs don’t want my management systems on them. It also means I have to handle some of what …

Read More

Make Your Blog Easy To Subscribe To

A quick hint: if you want people to read your writings on a regular basis make the link to your RSS or Atom feed dead simple to find. Somewhere that doesn’t require the user to scroll to see, uses the well known, industry-standard RSS icon that is freely available, and has the word “feed” in the link. I run into this problem often, especially with blogs hosted on Blogger or Blogspot and overly fancy WordPress themes that emphasize good looks (and mouseover events) instead of usability. For example, I just was reading a post from a blogger who has a really nice personal website, with a blog integrated into it. There’s absolutely no link to the feed anywhere. I searched the page …

Read More

Error While Loading Shared Libraries, Cannot Open Shared Object File

In the “I wish the Internet had an actual correct answer” category comes a question from a Windows colleague trying to build software on Linux. He asks “I’m trying to do some web performance testing and I compiled weighttp and the libev libraries, which worked fine, but when I try to run the program it gives me the following error.” weighttp: error while loading shared libraries: libev.so.4: cannot open shared object file: No such file or directory “I checked /usr/local/lib and the files are there. Do you have a suggestion?” Ah yes, a classic problem when building software. The problem here is that libev installed itself into /usr/local/lib: $ ls -l /usr/local/lib/libev* -rw-r–r–. 1 root root 435770 Feb 22 15:20 …

Read More

On Using Alternate Ports for SSH

There’s a post I read the other day that’s really been stuck in my craw (link is below). It was about the effects of moving SSH to an alternate port. The post starts out like this: Best practices state that you should run ssh on an non-standard port. Unfortunately some programs use port 22 by default and it isn’t obvious what the switch is to change this port. First, whose best practices say this? Some self-appointed security expert on the web? I ask because this sort of activity is known as “security through obscurity” and isn’t regarded well as a security tactic. The Wikipedia article on security through obscurity has a section called “Arguments For” which reads more like an …

Read More

Statistics Rollups Are Evil

It’s pretty common for statistics-gathering software, like MRTG, Cacti, VMware vCenter, etc. to roll statistics up over time by averaging them. This helps save space, as well as cut down on the processing needed to look at & graph the data. The problem is that the process is lossy. These systems save disk, memory, and CPU by averaging the data over longer and longer time periods. Those averages remove spikes and make the data less and less representative of what actually happened on your system or network. It also makes it damn near useless for planning and troubleshooting. Let’s start with an example I drew up in Excel to simulate something like vCenter recording an application server’s CPU load every …

Read More

Phrases We Can All Stop Using

I don’t like the idea of new year’s resolutions much, but I do like setting goals for myself. One of my goals this year has been to stop saying certain pointless phrases, like “to be honest.” In the process I’ve found myself becoming very aware of the other dumb things people say, too. Here are my top five. “To be honest.” You’ve been dishonest with me in the past and am only starting to be honest now? Is that what you wanted to have me think? The Urban Dictionary advises that it “can be used in any sentence as long as you agree with yourself” and that it is “the crutch of a idiot who uses it to append declarative …

Read More

iTunes Match & iCloud Music Tips

I’ve been using iTunes Match since the developer releases, and these are a few things I’ve learned so far about the service. I’m excited by it, mainly because I’ve longed for a proper multi-iTunes sync for a long time between my work, home, and laptop computers, and I think Apple is doing this right for iOS users. 1. There are new “iCloud Status” and “iCloud Download” information columns in iTunes. If you right-click on the iTunes column header you can turn them on to see what iCloud thinks of your music. Statuses include: Purchased: You bought this track from the iTunes Store, and regardless of the original format if you (re)download it you’ll get a 256 kbps AAC file. Matched: …

Read More