SlideShare uma empresa Scribd logo
1 de 13
Virtual Machine Sizing Considerations in NUMA Architectures Jason Shiplett – NetStar Systems Federal VMUG 3/23/11
Non-Uniform Memory Access 	A computer memory design used in multiprocessors, where the memory access time depends on the memory location relative to a processor. Under NUMA, a processor can access its own local memory faster than non-local memory, that is, memory local to another processor or memory shared between processors.
History and Modern Implementations Commercially developed in the 1990s by companies such as Burroughs (later Unisys), Convex Computer (later Hewlett-Packard), and Silicon Graphics. Modern implementations of cache-coherent NUMA (ccNUMA) include: AMD Opteron multiprocessor systems Intel Nehalem (x86) and Tukwila (IA-64) With Nehalem, Intel introduced Quick-Path Interconnect (QPI), which is a very high bandwidth point-to-point interconnect used to connect CPU sockets, ergo NUMA nodes, relieving some of the hit when accessing remote memory AMD uses a HyperTransport bus to connect CPU sockets, which competes with Intel’s QPI.
How NUMA support in vSphere affects you! NUMA ensures memory locality Memory locality lowers latency to access of  physical memory pages Memory access within a NUMA node provides a higher bandwidth connection to memory via on-die memory controller Lower latency + higher bandwidth = better performance
NUMA Nodes
Transparent Page Sharing and NUMA Transparent Page Sharing (TPS) is restricted to within NUMA nodes This means memory pages will only be shared within a single NUMA node. Like pages in disparate NUMA nodes will be duplicated.
Wide-VM NUMA Support in vSphere 4.1 A wide-VM is one which does not fit within a single NUMA node, e.g. 8 vCPU VM in a 4-socket quad-core server.  In vSphere 4.1, a wide-VM is split into smaller NUMA clients, which then occupy the fewest possible NUMA nodes.  Memory is interleaved between the NUMA nodes occupied by the individual NUMA clients.  Interleaving the memory in an equitable manner increases the percentage of memory locality over heuristic methods.  Implemented to improve performance of wide-VMs on large, e.g. quad socket, servers. Both CPU and memory performance do not differ much on two-node NUMA systems.
What Wide-VM Support Means for You! Few VMs will span multiple NUMA nodes Very large, tier 1 applications Only makes a real difference in large, e.g. 4+ socket, systems In large systems, memory interleaving (equitable distribution of memory pages) can make a significant performance increase The performance increase is more noticeable in memory-intensive applications.
Wide-VM NUMA Support
Sizing guidelines and considerations As always, it depends on your workload, servers, desired consolidation, etc. As a rule of thumb, keep vCPUs to a minimum, and if you can, keep it within a single NUMA node to ensure memory locality. Wide-VM NUMA support in vSphere 4.1 gives greater flexibility when spanning NUMA nodes is necessary. Memory intensive workloads benefit more from NUMA support
Questions?
References and links 1. "Non-Uniform Memory Access." Wikipedia, The Free Encyclopedia. Wikimedia Foundation, Inc. 22 Feb 2011. Web. 16 Mar 2011. 2. “Sizing VMS and NUMA Nodes.” Frank Denneman. 3 Feb 2010. Web. 16 Mar 2011 3. “VMware vSphere: The CPU Scheduler in ESX 4.1.” VMware. 2010. Web. 16 Mar 2011 4. “ESX 4.1 NUMA Scheduling.” Frank Denneman. 13 Sep 2010. Web. 16 Mar 2011 http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access http://www.vmware.com/files/pdf/techpaper/VMW_vSphere41_cpu_schedule_ESX.pdf http://frankdenneman.nl
Thanks! My blog – http://blog.shiplett.org Follow me on Twitter - @jshiplett

Mais conteúdo relacionado

Mais procurados (10)

Dulloor xen-summit
Dulloor xen-summitDulloor xen-summit
Dulloor xen-summit
 
Warehouse scale computer
Warehouse scale computerWarehouse scale computer
Warehouse scale computer
 
StartUpOpen 2011 - Projekat13
StartUpOpen 2011 - Projekat13StartUpOpen 2011 - Projekat13
StartUpOpen 2011 - Projekat13
 
Ibm system storage n series with multi store and snapmover redp4170
Ibm system storage n series with multi store and snapmover redp4170Ibm system storage n series with multi store and snapmover redp4170
Ibm system storage n series with multi store and snapmover redp4170
 
M2tech CNBS server
M2tech CNBS serverM2tech CNBS server
M2tech CNBS server
 
Introduction of ram ddr3
Introduction of ram ddr3Introduction of ram ddr3
Introduction of ram ddr3
 
Usb flash driver
Usb flash driverUsb flash driver
Usb flash driver
 
Storage class memory
Storage class memoryStorage class memory
Storage class memory
 
R1Soft CDP 3.0 Key Features
R1Soft CDP 3.0 Key FeaturesR1Soft CDP 3.0 Key Features
R1Soft CDP 3.0 Key Features
 
Ram
RamRam
Ram
 

Destaque

SLES Performance Enhancements for Large NUMA Systems
SLES Performance Enhancements for Large NUMA SystemsSLES Performance Enhancements for Large NUMA Systems
SLES Performance Enhancements for Large NUMA Systems
Davidlohr Bueso
 
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
sprdd
 
VMware Performance Troubleshooting
VMware Performance TroubleshootingVMware Performance Troubleshooting
VMware Performance Troubleshooting
glbsolutions
 

Destaque (20)

NUMA Performance Considerations in VMware vSphere
NUMA Performance Considerations in VMware vSphereNUMA Performance Considerations in VMware vSphere
NUMA Performance Considerations in VMware vSphere
 
IBM Enterprise 2014 - Technical University Abstract Guide
IBM Enterprise 2014 - Technical University Abstract GuideIBM Enterprise 2014 - Technical University Abstract Guide
IBM Enterprise 2014 - Technical University Abstract Guide
 
VMworld 2013: Protect vCenter Server with vCenter Server Heartbeat Deep Dive
VMworld 2013: Protect vCenter Server with vCenter Server Heartbeat Deep Dive VMworld 2013: Protect vCenter Server with vCenter Server Heartbeat Deep Dive
VMworld 2013: Protect vCenter Server with vCenter Server Heartbeat Deep Dive
 
CGB
CGBCGB
CGB
 
Pass cisco 200 101
Pass cisco 200 101Pass cisco 200 101
Pass cisco 200 101
 
vCenter Server 5.5 Single Sign-On VMDir deep dive
vCenter Server 5.5 Single Sign-On VMDir deep divevCenter Server 5.5 Single Sign-On VMDir deep dive
vCenter Server 5.5 Single Sign-On VMDir deep dive
 
Ibm c9020 971 certification
Ibm c9020 971 certificationIbm c9020 971 certification
Ibm c9020 971 certification
 
VMworld 2013: NSX PCI Reference Architecture Workshop Session 1 - Segmentation
VMworld 2013: NSX PCI Reference Architecture Workshop Session 1 - SegmentationVMworld 2013: NSX PCI Reference Architecture Workshop Session 1 - Segmentation
VMworld 2013: NSX PCI Reference Architecture Workshop Session 1 - Segmentation
 
VMworld 2013: vCenter Deep Dive
VMworld 2013: vCenter Deep Dive VMworld 2013: vCenter Deep Dive
VMworld 2013: vCenter Deep Dive
 
Presentation v mware view bootcamp series
Presentation   v mware view bootcamp seriesPresentation   v mware view bootcamp series
Presentation v mware view bootcamp series
 
SLES Performance Enhancements for Large NUMA Systems
SLES Performance Enhancements for Large NUMA SystemsSLES Performance Enhancements for Large NUMA Systems
SLES Performance Enhancements for Large NUMA Systems
 
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
Summit2014 riel chegu_w_0340_automatic_numa_balancing_0
 
Linux numa evolution
Linux numa evolutionLinux numa evolution
Linux numa evolution
 
VMworld 2014: vCenter Server Architecture and Deployment Deep Dive
VMworld 2014: vCenter Server Architecture and Deployment Deep DiveVMworld 2014: vCenter Server Architecture and Deployment Deep Dive
VMworld 2014: vCenter Server Architecture and Deployment Deep Dive
 
Non-Uniform Memory Access ( NUMA)
Non-Uniform Memory Access ( NUMA)Non-Uniform Memory Access ( NUMA)
Non-Uniform Memory Access ( NUMA)
 
FlashSystem February 2017
FlashSystem February 2017FlashSystem February 2017
FlashSystem February 2017
 
VMware Performance Troubleshooting
VMware Performance TroubleshootingVMware Performance Troubleshooting
VMware Performance Troubleshooting
 
VMworld 2015: Site Recovery Manager and Policy Based DR Deep Dive with Engine...
VMworld 2015: Site Recovery Manager and Policy Based DR Deep Dive with Engine...VMworld 2015: Site Recovery Manager and Policy Based DR Deep Dive with Engine...
VMworld 2015: Site Recovery Manager and Policy Based DR Deep Dive with Engine...
 
Storwize SVC presentation February 2017
Storwize SVC presentation February 2017Storwize SVC presentation February 2017
Storwize SVC presentation February 2017
 
ContainerCon EU 2016 - Software-Defined Storage and Container Schedulers
ContainerCon EU 2016 - Software-Defined Storage and Container SchedulersContainerCon EU 2016 - Software-Defined Storage and Container Schedulers
ContainerCon EU 2016 - Software-Defined Storage and Container Schedulers
 

Semelhante a Federal VMUG - March - Virtual machine sizing considerations in a numa environment v3

Computer's clasification
Computer's clasificationComputer's clasification
Computer's clasification
MayraChF
 
Lecture 6
Lecture  6Lecture  6
Lecture 6
Mr SMAK
 
Lecture 6
Lecture  6Lecture  6
Lecture 6
Mr SMAK
 
Lecture 6
Lecture  6Lecture  6
Lecture 6
Mr SMAK
 
How many total bits are required for a direct-mapped cache with 2048 .pdf
How many total bits are required for a direct-mapped cache with 2048 .pdfHow many total bits are required for a direct-mapped cache with 2048 .pdf
How many total bits are required for a direct-mapped cache with 2048 .pdf
Eye2eyeopticians10
 

Semelhante a Federal VMUG - March - Virtual machine sizing considerations in a numa environment v3 (20)

Overview on NUMA
Overview on NUMAOverview on NUMA
Overview on NUMA
 
Numa (non uniform memory access)
Numa (non uniform memory access)Numa (non uniform memory access)
Numa (non uniform memory access)
 
Challenges in Managing IT Infrastructure
Challenges in Managing IT InfrastructureChallenges in Managing IT Infrastructure
Challenges in Managing IT Infrastructure
 
Optimizing the memory management of a virtual machine monitor on a NUMA syste...
Optimizing the memory management of a virtual machine monitor on a NUMA syste...Optimizing the memory management of a virtual machine monitor on a NUMA syste...
Optimizing the memory management of a virtual machine monitor on a NUMA syste...
 
Computer's clasification
Computer's clasificationComputer's clasification
Computer's clasification
 
Symmetric multiprocessing and Microkernel
Symmetric multiprocessing and MicrokernelSymmetric multiprocessing and Microkernel
Symmetric multiprocessing and Microkernel
 
Lecture 6
Lecture  6Lecture  6
Lecture 6
 
Lecture 6
Lecture  6Lecture  6
Lecture 6
 
Lecture 6
Lecture  6Lecture  6
Lecture 6
 
Embedded Linux
Embedded LinuxEmbedded Linux
Embedded Linux
 
Cluster Technique used in Advanced Computer Architecture.pptx
Cluster Technique used in Advanced Computer Architecture.pptxCluster Technique used in Advanced Computer Architecture.pptx
Cluster Technique used in Advanced Computer Architecture.pptx
 
Parallel computing in india
Parallel computing in indiaParallel computing in india
Parallel computing in india
 
From Rack scale computers to Warehouse scale computers
From Rack scale computers to Warehouse scale computersFrom Rack scale computers to Warehouse scale computers
From Rack scale computers to Warehouse scale computers
 
Cluster Computing
Cluster ComputingCluster Computing
Cluster Computing
 
Amoeba1
Amoeba1Amoeba1
Amoeba1
 
Cluster Computers
Cluster ComputersCluster Computers
Cluster Computers
 
Parallel computing
Parallel computingParallel computing
Parallel computing
 
IBM Upgrades SVC with Solid State Drives — Achieves Better Storage Utilization
IBM Upgrades SVC with Solid State Drives — Achieves Better Storage UtilizationIBM Upgrades SVC with Solid State Drives — Achieves Better Storage Utilization
IBM Upgrades SVC with Solid State Drives — Achieves Better Storage Utilization
 
IBM Upgrades SVC with Solid State Drives — Achieves Better Storage Utilization
IBM Upgrades SVC with Solid State Drives — Achieves Better Storage UtilizationIBM Upgrades SVC with Solid State Drives — Achieves Better Storage Utilization
IBM Upgrades SVC with Solid State Drives — Achieves Better Storage Utilization
 
How many total bits are required for a direct-mapped cache with 2048 .pdf
How many total bits are required for a direct-mapped cache with 2048 .pdfHow many total bits are required for a direct-mapped cache with 2048 .pdf
How many total bits are required for a direct-mapped cache with 2048 .pdf
 

Mais de langonej (6)

Federal VMUG - March - Reflex VMC Overview
Federal VMUG - March - Reflex VMC OverviewFederal VMUG - March - Reflex VMC Overview
Federal VMUG - March - Reflex VMC Overview
 
Federal VMUG - March - Main Deck & MicroTech VDI
Federal VMUG - March - Main Deck & MicroTech VDIFederal VMUG - March - Main Deck & MicroTech VDI
Federal VMUG - March - Main Deck & MicroTech VDI
 
Federal VMUG - March - Transforming desktops with View
Federal VMUG - March - Transforming desktops with ViewFederal VMUG - March - Transforming desktops with View
Federal VMUG - March - Transforming desktops with View
 
Federal VMUG - March - VMware - Transforming Desktops with VMware View - Crai...
Federal VMUG - March - VMware - Transforming Desktops with VMware View - Crai...Federal VMUG - March - VMware - Transforming Desktops with VMware View - Crai...
Federal VMUG - March - VMware - Transforming Desktops with VMware View - Crai...
 
CES Government 2010: Cloud Computing in the Public Sector
CES Government 2010: Cloud Computing in the Public SectorCES Government 2010: Cloud Computing in the Public Sector
CES Government 2010: Cloud Computing in the Public Sector
 
DC Metro And Federal VMUG March 2009
DC Metro And Federal VMUG March 2009DC Metro And Federal VMUG March 2009
DC Metro And Federal VMUG March 2009
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 

Federal VMUG - March - Virtual machine sizing considerations in a numa environment v3

  • 1. Virtual Machine Sizing Considerations in NUMA Architectures Jason Shiplett – NetStar Systems Federal VMUG 3/23/11
  • 2. Non-Uniform Memory Access A computer memory design used in multiprocessors, where the memory access time depends on the memory location relative to a processor. Under NUMA, a processor can access its own local memory faster than non-local memory, that is, memory local to another processor or memory shared between processors.
  • 3. History and Modern Implementations Commercially developed in the 1990s by companies such as Burroughs (later Unisys), Convex Computer (later Hewlett-Packard), and Silicon Graphics. Modern implementations of cache-coherent NUMA (ccNUMA) include: AMD Opteron multiprocessor systems Intel Nehalem (x86) and Tukwila (IA-64) With Nehalem, Intel introduced Quick-Path Interconnect (QPI), which is a very high bandwidth point-to-point interconnect used to connect CPU sockets, ergo NUMA nodes, relieving some of the hit when accessing remote memory AMD uses a HyperTransport bus to connect CPU sockets, which competes with Intel’s QPI.
  • 4. How NUMA support in vSphere affects you! NUMA ensures memory locality Memory locality lowers latency to access of physical memory pages Memory access within a NUMA node provides a higher bandwidth connection to memory via on-die memory controller Lower latency + higher bandwidth = better performance
  • 6. Transparent Page Sharing and NUMA Transparent Page Sharing (TPS) is restricted to within NUMA nodes This means memory pages will only be shared within a single NUMA node. Like pages in disparate NUMA nodes will be duplicated.
  • 7. Wide-VM NUMA Support in vSphere 4.1 A wide-VM is one which does not fit within a single NUMA node, e.g. 8 vCPU VM in a 4-socket quad-core server. In vSphere 4.1, a wide-VM is split into smaller NUMA clients, which then occupy the fewest possible NUMA nodes. Memory is interleaved between the NUMA nodes occupied by the individual NUMA clients. Interleaving the memory in an equitable manner increases the percentage of memory locality over heuristic methods. Implemented to improve performance of wide-VMs on large, e.g. quad socket, servers. Both CPU and memory performance do not differ much on two-node NUMA systems.
  • 8. What Wide-VM Support Means for You! Few VMs will span multiple NUMA nodes Very large, tier 1 applications Only makes a real difference in large, e.g. 4+ socket, systems In large systems, memory interleaving (equitable distribution of memory pages) can make a significant performance increase The performance increase is more noticeable in memory-intensive applications.
  • 10. Sizing guidelines and considerations As always, it depends on your workload, servers, desired consolidation, etc. As a rule of thumb, keep vCPUs to a minimum, and if you can, keep it within a single NUMA node to ensure memory locality. Wide-VM NUMA support in vSphere 4.1 gives greater flexibility when spanning NUMA nodes is necessary. Memory intensive workloads benefit more from NUMA support
  • 12. References and links 1. "Non-Uniform Memory Access." Wikipedia, The Free Encyclopedia. Wikimedia Foundation, Inc. 22 Feb 2011. Web. 16 Mar 2011. 2. “Sizing VMS and NUMA Nodes.” Frank Denneman. 3 Feb 2010. Web. 16 Mar 2011 3. “VMware vSphere: The CPU Scheduler in ESX 4.1.” VMware. 2010. Web. 16 Mar 2011 4. “ESX 4.1 NUMA Scheduling.” Frank Denneman. 13 Sep 2010. Web. 16 Mar 2011 http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access http://www.vmware.com/files/pdf/techpaper/VMW_vSphere41_cpu_schedule_ESX.pdf http://frankdenneman.nl
  • 13. Thanks! My blog – http://blog.shiplett.org Follow me on Twitter - @jshiplett