Skip to main content

Posts

Hyper-V and reserving RAM for the host/root/parent partition

After a long process, I finally have a real-world calculation for determining how much RAM to reserve for a Hyper-V host. The question/answer about it is here. But the summary is that Hyper-V loses RAM to the Nonpaged pool (and all of it is "untagged") in addition to the "standard" stuff that Microsoft has documented. Be aware that I write MB/GB here, when I actually mean MiB/GiB. I feel it will be more intuitive to see the notation that Windows (incorrectly) uses. Host Overhead 300 MB for the Hypervisor services 512 MB for the Host OS (This is a recommended amount; you have some wiggle-room with this.) [The amount of physical RAM available to the host OS] multiplied by 0.0425 (result in GB ) for the Nonpaged pool (Which means multiply that by 1024 to convert to "MB") Per-VM Overhead 24 MB for the VM 8 MB for each 1 GB of RAM allocated to the VM. Examples 12 GB RAM, 1 VM @2 GB, 1 VM @4 GB Host: 812 + (0.0425 * 12 * 1024) = 1,334.24 MB
Recent posts

Live Migration between domains

For those of you like me who aren't experts at all things Active Directory (AD) and Hyper-V Live Migration (LM) permissions, it can be enough of a pain to LM a Virtual Machine (VM) between domains that you simply decide to take the VMs offline to affect the move. See, I only tolerate AD because it's required for LM'ing VMs; there isn't a choice. (It's also required for Windows Clusters, but that's a different topic.) But I figured it out. My back-story is that we setup a cluster using Windows 2012 r1 as the AD Domain Controller (DC) and Hyper-V Server 2012 r1 for the VM hosts. Then we decided we wanted to use r2 for the AD DC and Hyper-V hosts. Upgrading Hyper-V was easy. But I found that there's some unresolved Microsoft bug with Windows Clustering when upgrading the AD DC from Windows 2012 r1 to Windows 2012 r2--- clustering simply doesn't work correctly anymore . So we gave up and created a from-scratch Windows 2012 r2 AD DC then made a new cluster
In my attempt to deploy ReFS into a Production environment, I did some testing to see what sort of performance hit I should expect. As it turns out, it doesn't look bad, especially considering the benefits I'm after (protection against bit rot). Be aware that what I was most concerned about was the differences between the 3 configurations I looked at. I used 6 physical drives; all 10k HDDs in the same DAS enclosure. 2 were in a hardware RAID-1 array at the DAS level. The next 2 were also in a hardware RAID-1 array at the DAS level. The last 2 were setup as JBOD (Dell's app makes me set them up as a single-disk RAID-0). So Windows sees a total of 4 drives. One of the RAID-1 drives was formatted as NTFS ("raid1, ntfs"). The other RAID-1 drive was formatted as ReFS ("raid1, refs"). The last 2 were added to a "manual" Storage Spaces Pool, then I explicitly created a Storage Spaces mirror from those 2 drives and formatted the resulting volume as

Excel is my nemesis

Seriously, when is Microsoft going to make a setting that says, "Do NOT auto-detect data types!" so I can check that box? I deal with raw data a lot, and we end up using CSV simply because most everyone has a program that allows for easy viewing of the data inside (I still wish people had settled on a simple delimited format, but that's another rant). Excel (2007/2010) ends up being the most common data-viewing-tool that people use.  It's unfortunate. Most people have no idea that Excel attempts to auto-detect the type of data in a field, and even less know that some of it's guesses are irreversible. So if you send them a csv and they wish to change one little thing before sending it along, they have no idea that they just screwed up the file! Date information is the most annoying. If you send "yyyy-MM-dd HH:mm:ss", it gets transformed into "M/d/yyyy HH:mm"---not only for viewing, but it gets saved back into the CSV in that format! So st

Caesura 1.0

About a year ago, I made my first application for Android (1.6; Donut). This post is mainly to give me an easy way to install it again now that I've upgraded my G1 to CyanogenMod 6.1.0 (Android 2.2; Froyo). The purpose of the app is to restore the volume/ringer after turning it on Vibrate/Silent. Whenever you turn the volume down to Vibrate/Silent, the app pops up a menu that has 4 configurable options plus a "restore to this volume" slider. If you long-press an option, you can change it to be something else. You can either make the volume restore after a set amount of time (e.g 4 hours), or at a particular time (e.g. 8:00 AM). I use it each night before going to bed, or when I'm going to a meeting.

SSRS 2008 - Getting the schedule of a subscription on a report

After wasting a few hours, I've decided it's not worth it to proceed any further. If you want to know the schedule (or just the next-run-time) of a subscription, just go to the SSRS web site (the web UI). It's too much of a pain to use the ReportingService2005 interface. The simple back-story to this is that I've made an app that handles uploading (create/update) all of our reports (.RDL files) from the local computer to an SSRS instance. Doing this through the web UI is incredibly tedious, error-prone, and my Carpal Tunnel flares up after a few reports. So now that I'm done, I decided that it would be nice to see information about all of the various subscriptions that people have defined for the various reports. It's not hard to add this in. You just call ListSubscriptions(null, null) after logging in with an admin account. But the Subscription object has no information about the schedule it runs against! Well, actually it can tell you a few things via the

Disappearing exceptions (x64)

Hopefully, this will help me the next time I bang my head against the wall trying to figure out why an application of mine is going crazy, but none of my error-handling code seems to be working. The core threads that explain this are here: Visual Studio doesn't break on unhandled exception with windows 64-bit The case of the disappearing OnLoad exception   Silent exceptions on x64 development machines (Microsoft Connect) The summary is this: If an exception is thrown on Windows x64 (Vista, Win2k3, Win2k8, Win7, etc.) and it hits a kernal-mode boundary, it will be dropped. Execution will continue at that point as if no exception had been thrown. The simplest example is to create a new WinForm application and simply throw an exception from the OnLoad event. Not only will VS2008 not stop execution on that exception during debugging, but if you run it in "Release" mode, there will also be no trace of the exception. In this case, your code (OnLoad) was ultimately ca