Wednesday, February 07, 2018

Storage QoS with vSphere virtual disk IOPS limits

I'm a long time protagonist of storage QoS applied per each VM virtual disk (aka vDisk). In the past, vSphere virtual disk shares and IOPS limits were the only solutions. Nowadays, there are new architectural options - vSphere virtual disk reservations and VVols QoS. Anyway, whatever option you will decide to use, the reason to use QoS (IOPS limits) is the architecture of all modern shared storages. Let's dig a little bit deeper. In modern storage systems, you usually have a single pool of a large number of disks and volumes (aka LUNs) created on top of this pool. This modern storage array approach has a lot of advantages but the key advantage is the positive impact on performance because single LUN is spread across a large number of disks which multiplies available performance. However, you usually have multiple LUNs and all these LUNs resides on the same disk pool so it sits on the same disks, therefore all these LUNs interfere with each other from the performance point of view. Even you would have a single LUN you would have multiple VMs per single LUN (aka VMFS datastore) therefore VMs would affect each other.

Design consideration

What it all means? Well, if you have a typical vSphere and storage configuration depicted in the figure below, single VM can use all performance from the underlying storage system (disk pool) and I/O workload from one VM impacts another VM. We call this situation "noisy neighbor" where one VM has significantly higher storage traffic than others.

Modern Storage System Architecture - Disk Pool
The problem with such design is not only performance interference but the fact, that performance is unpredictable. VMs are getting excellent performance when storage is NOT overloaded but very poor performance during peak times.  From use experience point of view is better to limit VMs to decrease the difference between BEST and WORST performance.

How to design your infrastructure to keep your storage performance predictable? The short answer is to implement QoS. Of course, there is the longer answer.

Storage QoS

vSphere Storage QoS is called Storage I/O Control or simply SIOC. Storage-based per LUN QoS will not help you on VMFS because multiple VM virtual disks (vDisks) are accomodated on single LUN (datastore), however, all modern storages support Virtual Volumes (aka VVols) which is VMware framework how to manage vDisks directly on storage but the implementation is always specific to particular storage vendor. Nevertheless, in general, VVols can do QoS per vDisk (aka VMDK) as each vDisk is represented on storage as independent volume (aka LUN or better say sub-LUN or micro-LUN).

vSphere Storage QoS (SIOC) supports

  • IOPS Limits
  • IOPS Reservations
  • IOPS Shares
Storage I/O Control (SIOC) was initially introduced in vSphere 4.1. Nowadays it is called SIOC V1. vSphere 6.5 has introduced SIOC V2.

vSphere SIOC V1

In case you want to use vSphere SIOC V1 storage QoS, it is good to know, at least some, SIOC V1 "IOPS limit" implementation details
  • I/Os are normalized at 32KB so 128KB I/O is counted as 4 I/Os. This is vSphere default which can be changed by advanced parameter Disk.SchedCostUnit (default value is 32768 bytes) to satisfy different customer's specific requirements. Disk.SchedCostUnit is configurable and allowable values range between 4K to 256K.
  • In the latest ESXi version  ESXi 6.5 build 7526125) IOPS limit does not interfere with SVmotion (Storage vMotion). However, this is different behavior than in previous ESXi versions where storage vMotion was billed to the VM.
  • If VM has multiple disks with IOPS limits on the same datastore (LUN) then all limits are aggregated and enforced on such datastore per the whole VM. If vDisks of single VM are located on different datastores then limits are enforced independently per each datastore. The behavior is different on NFS datastores. All this behavior is explained in VMware KB "Limiting disk I/O from a specific virtual machine" - https://kb.vmware.com/kb/1038241

vSphere SIOC V2

It is worth to mention that SIOC V1 and SIOC V2 can co-exist. SIOC V2 is very different when compared to V1.

SIOC V2 implementation details

  • I/Os are NOT normalized at static I/O size like SIOC V1. In other words, SIOC V2 does not have Disk.SchedCostUnit implemented.
  • SIOCv2 is implemented using IO Filter framework and is managed by using SPBM Policies. 

VVols QoS

VVols QoS is out of the scope of this article.


Hope it is informative but as always do not hesitate to contact me for further details or discussions.

Sunday, January 28, 2018

ESXi - optical diagnostic information from VMNIC

I have been asked by one customer how to get optical diagnostic information from NIC which is Intel X540 10GbE Controller. NIC was identified by ESXi host as vmnic6 and more info about VNMIC can show command

esxcli network nic get -n vmnic6 

 esxcli network nic get -n vmnic6:  
  Advertised Auto Negotiation: true  
   Advertised Link Modes: 1000baseT/Full, 10000baseT/Full  
   Auto Negotiation: true  
   Cable Type: FIBRE  
   Current Message Level: 7  
   Driver Info:  
      Bus Info: 0000:03:00.0  
      Driver: ixgbe  
      Firmware Version: 0x800008fd, 18.0.16  
      Version: 4.4.1-iov  
   Link Detected: true  
   Link Status: Up  
   Name: vmnic6  
   PHYAddress: 0  
   Pause Autonegotiate: false  
   Pause RX: true  
   Pause TX: true  
   Supported Ports: FIBRE  
   Supports Auto Negotiation: true  
   Supports Pause: true  
   Supports Wakeon: false  
   Transceiver: external  
   Virtual Address: 00:50:56:5c:dd:9a  
   Wakeon: None  

On ESXi host optics diagnostic is not implemented. I have found that ethtool in linux has the option -m which displays optic diagnostic information but ESXi ethtool do not support it. Monitoring Switch Port SFP/QSFP Hardware Information Using ethtool in Cumulus linux is described here.

During the research, I have found that linux -m option reads these diagnostic information from EEPROM.  On ESXi host, we can dump EEPROM by following esxcli command.

 esxcli network nic eeprom dump -l 1048560 -o 0 -n vmnic6  

Here is the EEPROM dump from Intel X520 NIC

 Offset Value                        
 ------ ------------------------------------------------  
 0000  61 05 ea ff 00 00 40 00 42 80 60 81 3f 02 55 02   
 0010  5b 02 61 02 69 02 71 02 74 02 77 02 87 02 82 80   
 0020  00 05 ff ff ff ff ff ff ff ff fa fa 2c 06 2d 03   
 0030  40 40 30 40 ff ff ff ff ff ff ff ff ff ff ff ff   
 0040  32 06 ff ff ff ff ff ff ff ff ff ff ff ff 23 06   
 0050  1d 06 51 40 46 00 ff ff f5 ff a0 05 00 80 a7 02   
 0060  20 01 00 40 5a 23 3b 40 21 01 00 40 0d 31 27 03   
 0070  4c 01 ff ff ff ff ff ff ff ff ff ff 02 80 ea 1a   
 0080  fe 01 00 70 06 06 00 7a c0 c0 62 70 02 02 63 70   
 0090  de de 64 70 02 02 66 70 11 11 67 70 90 90 68 70   
 00a0  2c 2c 69 70 78 78 6a 70 40 40 74 70 01 01 06 72   
 00b0  00 00 06 74 00 00 06 76 00 00 06 78 00 00 12 72   
 00c0  e2 e2 12 74 e2 e2 12 76 e2 e2 12 78 e2 e2 13 72   
 00d0  36 36 13 74 36 36 13 76 36 36 13 78 36 36 14 72   
 00e0  98 98 14 74 98 98 14 76 98 98 14 78 98 98 15 72   
 00f0  1c 1c 15 74 1c 1c 15 76 1c 1c 15 78 1c 1c 18 72   
 0100  f2 f2 18 74 f2 f2 18 76 f2 f2 18 78 f2 f2 1b 72   
 0110  0a 0a 1b 74 0a 0a 1b 76 0a 0a 1b 78 0a 0a 1c 72   
 0120  0c 0c 1c 74 0c 0c 1c 76 0c 0c 1c 78 0c 0c 2c 72   
 0130  02 02 2c 74 02 02 2c 76 02 02 2c 78 02 02 5a 72   
 0140  02 02 5a 74 02 02 5a 76 02 02 5a 78 02 02 5b 72   
 0150  02 02 5b 74 02 02 5b 76 02 02 5b 78 02 02 5c 72   
 0160  00 00 5c 74 00 00 5c 76 00 00 5c 78 00 00 5e 72   
 0170  03 03 5e 74 03 03 5e 76 03 03 5e 78 03 03 01 7a   
 0180  98 98 09 7a 22 22 0a 7a 1d 1d 0c 7a 02 02 0f 7a   
 0190  98 98 10 7a 19 19 40 7a 61 61 7f 7a 00 00 80 7a   
 01a0  00 00 84 7a 00 00 85 7a 00 00 86 7a 00 00 87 7a   
 01b0  60 60 88 7a 61 61 89 7a 61 61 8a 7a 61 61 8b 7a   
 01c0  61 61 8c 7a 61 61 8d 7a 61 61 8e 7a 11 11 8f 7a   
 01d0  00 00 90 7a 30 30 91 7a 00 00 92 7a ac ac 93 7a   
 01e0  aa aa 94 7a aa aa 95 7a aa aa 96 7a 00 00 97 7a   
 01f0  00 00 98 7a 11 11 a2 7a 00 00 a3 7a 40 40 a4 7a   
 0200  ad ad a5 7a 60 60 a6 7a a9 a9 a7 7a 5a 5a a8 7a   
 0210  95 95 a9 7a aa aa aa 7a 55 55 ab 7a 01 01 ac 7a   
 0220  f8 f8 ad 7a 03 03 ae 7a 00 00 af 7a 09 09 b0 7a   
 0230  09 09 b1 7a 00 00 b2 7a 00 00 b3 7a 00 00 b4 7a   
 0240  80 80 b5 7a 07 07 b6 7a 40 40 b7 7a 10 10 b8 7a   
 0250  04 04 b9 7a 01 01 bf 7a ff ff c0 7a a3 a3 c1 7a   
 0260  7e 7e 52 72 06 06 52 74 06 06 52 76 06 06 52 78   
 0270  06 06 53 72 1b 1b 53 74 1b 1b 53 76 1b 1b 53 78   
 0280  1b 1b 54 72 1e 1e 54 74 1e 1e 54 76 1e 1e 54 78   
 0290  1e 1e 55 72 53 53 55 74 53 53 55 76 53 53 55 78   
 02a0  53 53 56 72 31 31 56 74 31 31 56 76 31 31 56 78   
 02b0  31 31 57 72 1b 1b 57 74 1b 1b 57 76 1b 1b 57 78   
 02c0  1b 1b 51 72 0c 0c 51 74 0c 0c 51 76 0c 0c 51 78   
 02d0  0c 0c 00 70 07 07 90 00 ff 00 00 00 00 00 00 00   
 02e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 02f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0300  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0310  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0320  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0330  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0340  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0350  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0360  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0370  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0380  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0390  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 03a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 03b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 03c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 03d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 03e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 03f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0400  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0410  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0420  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0430  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0440  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0450  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0460  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0470  00 00 00 00 00 00 00 7a df df 00 00 00 00 15 00   
 0480  3b 3f ba 81 07 00 3f 00 14 00 00 00 07 4e 61 1f   
 0490  28 10 a6 10 02 00 f7 17 15 15 35 00 64 6e 01 00   
 04a0  24 6e 96 72 78 18 e2 ea 07 00 05 00 3f 06 28 15   
 04b0  00 00 04 14 00 00 05 00 3f 16 28 15 00 00 04 14   
 04c0  00 00 07 00 24 6e 96 72 78 18 06 01 82 05 00 00   
 04d0  01 00 07 00 24 6e 96 72 78 1a 06 01 82 05 00 00   
 04e0  01 00 02 00 40 0f 00 00 02 00 40 0f 00 00 0f 00   
 04f0  44 04 00 00 80 00 00 03 ff ff ff ff 00 03 ff ff   
 0500  ff ff 00 03 ff ff ff ff 00 03 ff ff ff ff 0f 00   
 0510  44 04 00 00 80 00 00 03 ff ff ff ff 00 03 ff ff   
 0520  ff ff 00 03 ff ff ff ff 00 03 ff ff ff ff 10 3d   
 0530  20 00 12 ff c6 c4 00 00 05 03 00 03 00 00 00 c8   
 0540  00 00 00 00 00 00 00 00 00 00 a2 02 00 02 82 15   
 0550  00 58 35 34 30 20 31 30 47 62 45 20 43 6f 6e 74   
 0560  72 6f 6c 6c 65 72 90 79 00 56 30 0a 46 46 56 31   
 0570  38 2e 30 2e 31 36 50 4e 06 47 31 34 38 34 33 4d   
 0580  4e 04 31 30 32 38 56 31 12 44 53 56 31 30 32 38   
 0590  56 50 44 52 2e 56 45 52 31 2e 30 56 33 06 44 54   
 05a0  49 4e 49 43 56 34 17 44 43 4d 31 30 30 31 30 30   
 05b0  38 37 44 35 32 31 30 31 30 30 38 37 44 35 56 35   
 05c0  04 4e 50 59 32 56 36 04 50 4d 54 31 56 37 0d 4e   
 05d0  4d 56 49 6e 74 65 6c 20 43 6f 72 70 52 56 03 39   
 05e0  00 00 78 00 ff ff ff ff ff ff ff ff ff ff ff ff   
 05f0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0600  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0610  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0620  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0630  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0640  ff ff ff ff ff ff ff ff ff ff ff ff ff ff 24 6e   
 0650  96 72 78 18 24 6e 96 72 78 1a 69 53 e0 05 01 00   
 0660  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0670  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0680  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0690  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 06a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 06b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 06c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 06d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 06e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 06f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0700  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0710  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0720  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0730  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0740  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0750  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0760  00 12 10 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0770  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0780  00 00 03 3d 00 00 00 00 00 00 00 00 00 00 00 00   
 0790  00 00 00 00 00 00 bc 0c 00 00 00 00 00 00 00 00   
 07a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 07b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 07c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 07d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 07e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 07f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0800  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0810  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0820  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0830  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0840  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0850  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0860  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0870  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0880  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0890  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 08a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 08b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 08c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 08d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 08e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 08f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0900  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0910  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0920  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0930  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0940  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0950  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0960  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0970  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0980  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0990  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 09a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 09b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 09c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 09d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 3d   
 09e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 09f0  00 00 bc 0c 00 00 00 00 00 00 00 00 00 00 00 00   
 0a00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0a10  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0a20  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0a30  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0a40  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0a50  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0a60  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0a70  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0a80  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0a90  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0aa0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0ab0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0ac0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0ad0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0ae0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0af0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0b00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0b10  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0b20  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0b30  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0b40  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0b50  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0b60  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0b70  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0b80  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0b90  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0ba0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0bb0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0bc0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0bd0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0be0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0bf0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0c00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0c10  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0c20  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 0c30  00 00 00 00 00 00 00 00 00 00 24 6e 96 72 78 19   
 0c40  24 6e 96 72 78 1b 03 00 24 6e 96 72 78 19 24 6e   
 0c50  96 72 78 1b 00 20 01 20 06 00 35 48 30 34 39 34   
 0c60  30 2d 35 30 56 4c 01 08 00 00 00 00 ff ff ff ff   
 0c70  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0c80  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0c90  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0ca0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0cb0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0cc0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0cd0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0ce0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0cf0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0d00  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0d10  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0d20  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0d30  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0d40  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0d50  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0d60  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0d70  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0d80  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0d90  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0da0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0db0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0dc0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0dd0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0de0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0df0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0e00  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0e10  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0e20  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0e30  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0e40  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0e50  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0e60  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0e70  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0e80  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0e90  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0ea0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0eb0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0ec0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0ed0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0ee0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0ef0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0f00  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0f10  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0f20  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0f30  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0f40  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0f50  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0f60  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0f70  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0f80  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0f90  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0fa0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0fb0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0fc0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0fd0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0fe0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
 0ff0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  

Memory maps are described in specification SFF-8472 available on multiple places around the Internet.

Two 256 bytes memory maps are described in SFF-8472 Specification but the problem is how to locate these maps in EEPROM dump which has, in this particular case (Intel X520) 4,080 bytes.

I have prepared simple Perl script to convert hex numbers into ASCII characters and look what text is available in the dump. Perl script is here

 #!/usr/bin/perl  
 print "EEPROM view\n";  
 my $filename = 'eeprom.dump';  
 open(my $fh, '<', $filename) or die "Could not open file '$filename' $!";  
 $line = 0;  
 while (my $row = <$fh>) {  
  $line++;  
  chomp $row;  
  if ($line>2) {  
   print "$row\n";  
   $data_str = substr($row, 7, 48);  
   @data = split(" ",$data_str);  
   print "    ";  
   foreach $b_str (@data) {  
    $b = hex $b_str;  
    $char = chr($b);  
    if ( ($b>=32) and ($b<=126) ) {  
     print $char;  
     print " ";  
    } else {  
     print "- ";  
    }  
   }   
   print "\n";  
  }   
 }  

... and dump with ASCII translation is here ...

 EEPROM view  
 0000  61 05 ea ff 00 00 40 00 42 80 60 81 3f 02 55 02   
     a - - - - - @ - B - ` - ? - U -   
 0010  5b 02 61 02 69 02 71 02 74 02 77 02 87 02 82 80   
     [ - a - i - q - t - w - - - - -   
 0020  00 05 ff ff ff ff ff ff ff ff fa fa 2c 06 2d 03   
     - - - - - - - - - - - - , - - -   
 0030  40 40 30 40 ff ff ff ff ff ff ff ff ff ff ff ff   
     @ @ 0 @ - - - - - - - - - - - -   
 0040  32 06 ff ff ff ff ff ff ff ff ff ff ff ff 23 06   
     2 - - - - - - - - - - - - - # -   
 0050  1d 06 51 40 46 00 ff ff f5 ff a0 05 00 80 a7 02   
     - - Q @ F - - - - - - - - - - -   
 0060  20 01 00 40 5a 23 3b 40 21 01 00 40 0d 31 27 03   
       - - @ Z # ; @ ! - - @ - 1 ' -   
 0070  4c 01 ff ff ff ff ff ff ff ff ff ff 02 80 ea 1a   
     L - - - - - - - - - - - - - - -   
 0080  fe 01 00 70 06 06 00 7a c0 c0 62 70 02 02 63 70   
     - - - p - - - z - - b p - - c p   
 0090  de de 64 70 02 02 66 70 11 11 67 70 90 90 68 70   
     - - d p - - f p - - g p - - h p   
 00a0  2c 2c 69 70 78 78 6a 70 40 40 74 70 01 01 06 72   
     , , i p x x j p @ @ t p - - - r   
 00b0  00 00 06 74 00 00 06 76 00 00 06 78 00 00 12 72   
     - - - t - - - v - - - x - - - r   
 00c0  e2 e2 12 74 e2 e2 12 76 e2 e2 12 78 e2 e2 13 72   
     - - - t - - - v - - - x - - - r   
 00d0  36 36 13 74 36 36 13 76 36 36 13 78 36 36 14 72   
     6 6 - t 6 6 - v 6 6 - x 6 6 - r   
 00e0  98 98 14 74 98 98 14 76 98 98 14 78 98 98 15 72   
     - - - t - - - v - - - x - - - r   
 00f0  1c 1c 15 74 1c 1c 15 76 1c 1c 15 78 1c 1c 18 72   
     - - - t - - - v - - - x - - - r   
 0100  f2 f2 18 74 f2 f2 18 76 f2 f2 18 78 f2 f2 1b 72   
     - - - t - - - v - - - x - - - r   
 0110  0a 0a 1b 74 0a 0a 1b 76 0a 0a 1b 78 0a 0a 1c 72   
     - - - t - - - v - - - x - - - r   
 0120  0c 0c 1c 74 0c 0c 1c 76 0c 0c 1c 78 0c 0c 2c 72   
     - - - t - - - v - - - x - - , r   
 0130  02 02 2c 74 02 02 2c 76 02 02 2c 78 02 02 5a 72   
     - - , t - - , v - - , x - - Z r   
 0140  02 02 5a 74 02 02 5a 76 02 02 5a 78 02 02 5b 72   
     - - Z t - - Z v - - Z x - - [ r   
 0150  02 02 5b 74 02 02 5b 76 02 02 5b 78 02 02 5c 72   
     - - [ t - - [ v - - [ x - - \ r   
 0160  00 00 5c 74 00 00 5c 76 00 00 5c 78 00 00 5e 72   
     - - \ t - - \ v - - \ x - - ^ r   
 0170  03 03 5e 74 03 03 5e 76 03 03 5e 78 03 03 01 7a   
     - - ^ t - - ^ v - - ^ x - - - z   
 0180  98 98 09 7a 22 22 0a 7a 1d 1d 0c 7a 02 02 0f 7a   
     - - - z " " - z - - - z - - - z   
 0190  98 98 10 7a 19 19 40 7a 61 61 7f 7a 00 00 80 7a   
     - - - z - - @ z a a - z - - - z   
 01a0  00 00 84 7a 00 00 85 7a 00 00 86 7a 00 00 87 7a   
     - - - z - - - z - - - z - - - z   
 01b0  60 60 88 7a 61 61 89 7a 61 61 8a 7a 61 61 8b 7a   
     ` ` - z a a - z a a - z a a - z   
 01c0  61 61 8c 7a 61 61 8d 7a 61 61 8e 7a 11 11 8f 7a   
     a a - z a a - z a a - z - - - z   
 01d0  00 00 90 7a 30 30 91 7a 00 00 92 7a ac ac 93 7a   
     - - - z 0 0 - z - - - z - - - z   
 01e0  aa aa 94 7a aa aa 95 7a aa aa 96 7a 00 00 97 7a   
     - - - z - - - z - - - z - - - z   
 01f0  00 00 98 7a 11 11 a2 7a 00 00 a3 7a 40 40 a4 7a   
     - - - z - - - z - - - z @ @ - z   
 0200  ad ad a5 7a 60 60 a6 7a a9 a9 a7 7a 5a 5a a8 7a   
     - - - z ` ` - z - - - z Z Z - z   
 0210  95 95 a9 7a aa aa aa 7a 55 55 ab 7a 01 01 ac 7a   
     - - - z - - - z U U - z - - - z   
 0220  f8 f8 ad 7a 03 03 ae 7a 00 00 af 7a 09 09 b0 7a   
     - - - z - - - z - - - z - - - z   
 0230  09 09 b1 7a 00 00 b2 7a 00 00 b3 7a 00 00 b4 7a   
     - - - z - - - z - - - z - - - z   
 0240  80 80 b5 7a 07 07 b6 7a 40 40 b7 7a 10 10 b8 7a   
     - - - z - - - z @ @ - z - - - z   
 0250  04 04 b9 7a 01 01 bf 7a ff ff c0 7a a3 a3 c1 7a   
     - - - z - - - z - - - z - - - z   
 0260  7e 7e 52 72 06 06 52 74 06 06 52 76 06 06 52 78   
     ~ ~ R r - - R t - - R v - - R x   
 0270  06 06 53 72 1b 1b 53 74 1b 1b 53 76 1b 1b 53 78   
     - - S r - - S t - - S v - - S x   
 0280  1b 1b 54 72 1e 1e 54 74 1e 1e 54 76 1e 1e 54 78   
     - - T r - - T t - - T v - - T x   
 0290  1e 1e 55 72 53 53 55 74 53 53 55 76 53 53 55 78   
     - - U r S S U t S S U v S S U x   
 02a0  53 53 56 72 31 31 56 74 31 31 56 76 31 31 56 78   
     S S V r 1 1 V t 1 1 V v 1 1 V x   
 02b0  31 31 57 72 1b 1b 57 74 1b 1b 57 76 1b 1b 57 78   
     1 1 W r - - W t - - W v - - W x   
 02c0  1b 1b 51 72 0c 0c 51 74 0c 0c 51 76 0c 0c 51 78   
     - - Q r - - Q t - - Q v - - Q x   
 02d0  0c 0c 00 70 07 07 90 00 ff 00 00 00 00 00 00 00   
     - - - p - - - - - - - - - - - -   
 02e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 02f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0300  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0310  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0320  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0330  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0340  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0350  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0360  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0370  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0380  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0390  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 03a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 03b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 03c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 03d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 03e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 03f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0400  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0410  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0420  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0430  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0440  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0450  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0460  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0470  00 00 00 00 00 00 00 7a df df 00 00 00 00 15 00   
     - - - - - - - z - - - - - - - -   
 0480  3b 3f ba 81 07 00 3f 00 14 00 00 00 07 4e 61 1f   
     ; ? - - - - ? - - - - - - N a -   
 0490  28 10 a6 10 02 00 f7 17 15 15 35 00 64 6e 01 00   
     ( - - - - - - - - - 5 - d n - -   
 04a0  24 6e 96 72 78 18 e2 ea 07 00 05 00 3f 06 28 15   
     $ n - r x - - - - - - - ? - ( -   
 04b0  00 00 04 14 00 00 05 00 3f 16 28 15 00 00 04 14   
     - - - - - - - - ? - ( - - - - -   
 04c0  00 00 07 00 24 6e 96 72 78 18 06 01 82 05 00 00   
     - - - - $ n - r x - - - - - - -   
 04d0  01 00 07 00 24 6e 96 72 78 1a 06 01 82 05 00 00   
     - - - - $ n - r x - - - - - - -   
 04e0  01 00 02 00 40 0f 00 00 02 00 40 0f 00 00 0f 00   
     - - - - @ - - - - - @ - - - - -   
 04f0  44 04 00 00 80 00 00 03 ff ff ff ff 00 03 ff ff   
     D - - - - - - - - - - - - - - -   
 0500  ff ff 00 03 ff ff ff ff 00 03 ff ff ff ff 0f 00   
     - - - - - - - - - - - - - - - -   
 0510  44 04 00 00 80 00 00 03 ff ff ff ff 00 03 ff ff   
     D - - - - - - - - - - - - - - -   
 0520  ff ff 00 03 ff ff ff ff 00 03 ff ff ff ff 10 3d   
     - - - - - - - - - - - - - - - =   
 0530  20 00 12 ff c6 c4 00 00 05 03 00 03 00 00 00 c8   
       - - - - - - - - - - - - - - -   
 0540  00 00 00 00 00 00 00 00 00 00 a2 02 00 02 82 15   
     - - - - - - - - - - - - - - - -   
 0550  00 58 35 34 30 20 31 30 47 62 45 20 43 6f 6e 74   
     - X 5 4 0   1 0 G b E   C o n t   
 0560  72 6f 6c 6c 65 72 90 79 00 56 30 0a 46 46 56 31   
     r o l l e r - y - V 0 - F F V 1   
 0570  38 2e 30 2e 31 36 50 4e 06 47 31 34 38 34 33 4d   
     8 . 0 . 1 6 P N - G 1 4 8 4 3 M   
 0580  4e 04 31 30 32 38 56 31 12 44 53 56 31 30 32 38   
     N - 1 0 2 8 V 1 - D S V 1 0 2 8   
 0590  56 50 44 52 2e 56 45 52 31 2e 30 56 33 06 44 54   
     V P D R . V E R 1 . 0 V 3 - D T   
 05a0  49 4e 49 43 56 34 17 44 43 4d 31 30 30 31 30 30   
     I N I C V 4 - D C M 1 0 0 1 0 0   
 05b0  38 37 44 35 32 31 30 31 30 30 38 37 44 35 56 35   
     8 7 D 5 2 1 0 1 0 0 8 7 D 5 V 5   
 05c0  04 4e 50 59 32 56 36 04 50 4d 54 31 56 37 0d 4e   
     - N P Y 2 V 6 - P M T 1 V 7 - N   
 05d0  4d 56 49 6e 74 65 6c 20 43 6f 72 70 52 56 03 39   
     M V I n t e l   C o r p R V - 9   
 05e0  00 00 78 00 ff ff ff ff ff ff ff ff ff ff ff ff   
     - - x - - - - - - - - - - - - -   
 05f0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0600  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0610  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0620  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0630  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0640  ff ff ff ff ff ff ff ff ff ff ff ff ff ff 24 6e   
     - - - - - - - - - - - - - - $ n   
 0650  96 72 78 18 24 6e 96 72 78 1a 69 53 e0 05 01 00   
     - r x - $ n - r x - i S - - - -   
 0660  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0670  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0680  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0690  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 06a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 06b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 06c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 06d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 06e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 06f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0700  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0710  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0720  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0730  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0740  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0750  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0760  00 12 10 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0770  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0780  00 00 03 3d 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - = - - - - - - - - - - - -   
 0790  00 00 00 00 00 00 bc 0c 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 07a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 07b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 07c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 07d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 07e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 07f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0800  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0810  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0820  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0830  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0840  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0850  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0860  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0870  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0880  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0890  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 08a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 08b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 08c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 08d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 08e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 08f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0900  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0910  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0920  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0930  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0940  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0950  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0960  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0970  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0980  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0990  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 09a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 09b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 09c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 09d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 3d   
     - - - - - - - - - - - - - - - =   
 09e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 09f0  00 00 bc 0c 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0a00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0a10  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0a20  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0a30  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0a40  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0a50  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0a60  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0a70  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0a80  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0a90  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0aa0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0ab0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0ac0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0ad0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0ae0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0af0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0b00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0b10  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0b20  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0b30  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0b40  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0b50  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0b60  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0b70  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0b80  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0b90  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0ba0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0bb0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0bc0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0bd0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0be0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0bf0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0c00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0c10  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0c20  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
     - - - - - - - - - - - - - - - -   
 0c30  00 00 00 00 00 00 00 00 00 00 24 6e 96 72 78 19   
     - - - - - - - - - - $ n - r x -   
 0c40  24 6e 96 72 78 1b 03 00 24 6e 96 72 78 19 24 6e   
     $ n - r x - - - $ n - r x - $ n   
 0c50  96 72 78 1b 00 20 01 20 06 00 35 48 30 34 39 34   
     - r x - -   -   - - 5 H 0 4 9 4   
 0c60  30 2d 35 30 56 4c 01 08 00 00 00 00 ff ff ff ff   
     0 - 5 0 V L - - - - - - - - - -   
 0c70  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0c80  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0c90  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0ca0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0cb0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0cc0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0cd0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0ce0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0cf0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0d00  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0d10  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0d20  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0d30  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0d40  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0d50  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0d60  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0d70  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0d80  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0d90  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0da0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0db0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0dc0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0dd0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0de0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0df0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0e00  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0e10  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0e20  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0e30  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0e40  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0e50  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0e60  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0e70  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0e80  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0e90  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0ea0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0eb0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0ec0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0ed0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0ee0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0ef0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0f00  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0f10  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0f20  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0f30  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0f40  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0f50  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0f60  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0f70  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0f80  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0f90  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0fa0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0fb0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0fc0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0fd0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0fe0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   
 0ff0  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   
     - - - - - - - - - - - - - - - -   

The most interesting part of the dump from text (ASCII) perspective is the part between 0550h and 05E0h.

  0550 00 58 35 34 30 20 31 30 47 62 45 20 43 6f 6e 74  
    - X 5 4 0  1 0 G b E  C o n t  
  0560 72 6f 6c 6c 65 72 90 79 00 56 30 0a 46 46 56 31  
    r o l l e r - y - V 0 - F F V 1    
  0570 38 2e 30 2e 31 36 50 4e 06 47 31 34 38 34 33 4d    
    8 . 0 . 1 6 P N - G 1 4 8 4 3 M    
  0580 4e 04 31 30 32 38 56 31 12 44 53 56 31 30 32 38    
    N - 1 0 2 8 V 1 - D S V 1 0 2 8    
  0590 56 50 44 52 2e 56 45 52 31 2e 30 56 33 06 44 54  
    V P D R . V E R 1 . 0 V 3 - D T  
  05a0 49 4e 49 43 56 34 17 44 43 4d 31 30 30 31 30 30  
    I N I C V 4 - D C M 1 0 0 1 0 0  
  05b0 38 37 44 35 32 31 30 31 30 30 38 37 44 35 56 35   
    8 7 D 5 2 1 0 1 0 0 8 7 D 5 V 5  
  05c0 04 4e 50 59 32 56 36 04 50 4d 54 31 56 37 0d 4e    
    - N P Y 2 V 6 - P M T 1 V 7 - N    
  05d0 4d 56 49 6e 74 65 6c 20 43 6f 72 70 52 56 03 39    
    M V I n t e l  C o r p R V - 9    
  05e0 00 00 78 00 ff ff ff ff ff ff ff ff ff ff ff ff  
    - - x - - - - - - - - - - - - -  

There are adapter model and vendor name but it seems to me that it does not fit into the memory maps defined in the SFF-8472.  Therefore I do not know how to find optic (SFP) diagnostic values in EEPROM memory dump.

If you have any idea if I am in the right track and how to continue, please let me know.


Wednesday, January 24, 2018

vSphere 6.5 - DRS CPU Over-Commitment

A lot of VMware vSphere architects and engineers are designing their vSphere clusters for some overbooking ratios to define some level of the service (SLA or OLA) and differentiate between different compute tiers. They usually want to achieve something like
  • Tier 1 cluster (mission-critical applications) - 1:1 vCPU / pCPU ratio
  • Tier 2 cluster (business-critical applications) - 3:1 vCPU / pCPU ratio
  • Tier 3 cluster (supporting applications) - 5:1 vCPU / pCPU ratio
  • Tier 4 cluster (virtual desktops) - 10:1 vCPU / pCPU ratio
Before vSphere 6.5 we have to monitor it externally by vROps or some other monitoring tool. Some time ago I have blogged how to achieve it with PowerCLI and LogInsight - ESXi host vCPU/pCPU reporting via PowerCLI to LogInsight.

vSphere 6.5 DRS has introduced additional option to set maximum CPU over-commitment. It limits the number of vCPUs per pCPU in particular DRS cluster. However, it is good to know that there are two different advanced DRS options (configuration parameters) how to specify vCPU:pCPU ratio and each setting behaves differently. See table below ...

DRS Advanced OptionScopeMin-Max Value
MaxVcpusPerClusterPctcluster0% - 500%
MaxVCPUsPerCorehost0 - 32

It is worth to mention a little bit tricky setting of these additional options via GUI. It is good to know how GUI setting of "CPU Over-Commitment" is mapped to DRS cluster advanced options.

In my lab, I have VCSA 6.5 U1c (build 7119157) so I did some tests.

If I set "CPU Over-Commitment" in vSphere Web Client (Flash/Flex) it sets MaxVcpusPerClusterPct so it is the setting per the whole vSphere Cluster.

However, in vSphere Client (HTML5) it sets MaxVCPUsPerCore so it is per ESXi host.

Therefore, it is good to know what you would like to achieve and double check DRS Advanced Options.

See different behavior in screenshots below

6.5 U1c (build 7119157) vSphere Web Client (Flash/Flex) sets MaxVcpusPerClusterPct

6.5 U1c (build 7119157) vSphere Client (HTML5) sets MaxVCPUsPerCore
So this is how it should work. Now let's do some test to understand real behavior.

TEST 1: MaxVcpusPerClusterPct = 0 

Let's set MaxVcpusPerClusterPct to 0 so we are saying to allow 0 : 1 vCPU / pCPU ratio. In other words, no VM can be running in the cluster. And it works as expected. When I try to run VM I get the error "The total number of virtual CPUs present or requested in virtual machines' configuration has exceeded the limit on the host: 0". Well, it is a little bit misleading because it should be cluster-wide rule but it works as expected.

Error when MaxVcpusPerClusterPct is set to 0
TEST 2: MaxVcpusPerClusterPct = 100 

Let's set MaxVcpusPerClusterPct to 100% so we are saying to allow 1 : 1 vCPU / pCPU ratio. I have 4 node DRS cluster where each ESXi host has two cores (pCPUs), therefore I have 8 pCPUs available in the cluster. And I can really start only four VMs because each has 2 vCPUs so I can run up to 8 vCPUs in DRS cluster.

Error when MaxVcpusPerClusterPct is set to 100
It is great, but it is worth to mention that VMs were started on single ESXi host even I have 4 ESXi hosts in DRS cluster. So vCPU / pCPU ratio is compliant per cluster but not per ESXi host as I have 8 vCPUs on single ESXi hosts having just 2 pCPUs. But that's expected behavior. So far so good.

TEST 3: MaxVcpusPerCore = 0 

MaxVcpusPerCore should solve the problem observed in previous two test because it should set vCPU / pCPU ratio per host which is much better from the predictability point of view.

Let's set MaxVcpusPerCore to 0. My expectation was that I will not be able to start any VM but that was NOT the case. I was able to start a lot of VMs and exceed the expected vCPU / pCPU ratio. This is unexpected behavior.

TEST 4: MaxVcpusPerCore = 1 


Let's set MaxVcpusPerCore to 1.  My expectation was that I will not be able to start more than 2 vCPUs per ESXi host so only one VM with 2 vCPUs. Unfortunately, I was able to start much more vCPUs per ESXi host. This is again unexpected behavior.

TEST 5: MaxVcpusPerCore = 4 

I have been informed by DRS Engineer that the minimum value allowed by host over-commitment ratio option (MaxVCPUsPerCore) is 4:1.

So, let's set MaxVcpusPerCore to 4.  I have prepared nine VMs with 4 vCPUs each and my expectation is that I will not be able to start more than 8 vCPUs per ESXi host so only two VMs with 4 vCPUs per ESXi host. And because I have 4 ESXi hosts per cluster I should be able to start the maximum of 8 VMs.

Expected error message when MaxVcpusPerCore is set to 4 and vCPU:pCPU is over 4:1 per ESXi host.
Conclusion

Advanced DRS setting MaxVcpusPerClusterPct supports values between 0 and 500 and represents percentage between vCPUs and pCPUs across the whole DRS cluster. If the value is higher then 500, enforcing does not work. So, vCPU / pCPU percentage ratio can be enforced between 0:1 to 5:1.  vCPU:pCPU ratio 0:1 is a special setting where no VM can be PowerOn on vSphere Cluster. This is little bit risky setting but it can be used to put the whole cluster in kind of "maintenance mode" and forbid anyone to run VMs there.

Advanced DRS setting MaxVcpusPerCore currently supports values between 0 and 32 but it works only with values between 4 and 32. This setting enforces vCPU / pCPU per each ESXi host within DRS cluster. This means that the minimum vCPU / pCPU ration configurable by this option is 4 : 1.

To be honest, I think for vSphere architects/designers MaxVcpusPerCore makes more sense than MaxVcpusPerClusterPct because vCPU/pCPU overbooking ratio defines CPU quality per ESXi host.

VMware is internally considering to align MaxVcpusPerClusterPct and MaxVcpusPerCore behavior and allow lower vCPU / pCPU ratios when MaxVcpusPerCore is used. I will track how this topic will evolve in the future. Stay tuned.

Friday, January 12, 2018

VMware Response to Speculative Execution security issues, CVE-2017-5753, CVE-2017-5715, CVE-2017-5754 (aka Spectre and Meltdown)

Since January 3, 2017, the whole IT industry is mitigating the impact of SPECTRE and MELTDOWN vulnerabilities and administrators are updating their infrastructures.

Three different CVEs have been identified related to the media described issues:
  • CVE-2017-5753 (Spectre - Variant 1) - Branch target injection
  • CVE-2017-5715 (Spectre - Variant 2) - Bounds check bypass
  • CVE-2017-5754 (Meltdown - Variant 3) - Rogue data cache load
All three security CVEs (common vulnerabilities and exposures) are abusing multi-pipeline architecture (using multiple CPU pipelines) and performance optimization (speculative execution) used in all modern CPUs. Simplified but IMHO very nice explanation is here. If I understand the issue and resolution correctly, it all boils down to new CPU microcodes which must expose special CPU instructions to operating systems which has to incorporate it into their kernels.

VMware infrastructure is, obviously, impacted as well. It is very important to patch the whole infrastructure stack. All subsystems in the infrastructure stack described below must be patched or upgraded for effective mitigation. The virtual infrastructure stack is composed of
  • Operating systems (OS)
  • Virtual Machines / Virtual Appliances
  • Hypervisors
  • CPU microcode (usually part of BIOS)
GUEST OS
For guest OS you should obtain patches from your OS software vendors. However, guest operating systems are using new CPU instructions (capabilities IBRS, IBPB, STIBP) to mitigate Spectre/Meltdown vulnerabilities. These capabilities are exposed from physical CPU microcode (note: Intel cpu microcode is currently unstable) therefore patches from top to down (OS-HYPERVISOR-CPU microcode) is necessary for successful vulnerability mitigation. To expose those new CPU capabilities to guest OS, Virtual Machine hardware 9 and newer must be used otherwise those new capabilities are masked by VM hardware and Guest OS kernel would not be able to use it.

VIRTUAL APPLIANCES
Another consideration should be given to VMware Virtual Appliances. VMware officially released a new Knowledge Base article regarding the investigation of the impact on the VMware Virtual Appliances (KB 52264) and there is also VMware Security Advisory VMSA-2018-0007.

HYPERVISOR
Hypervisor remediation can be classified into the two following categories:
  • Hypervisor-Specific Remediation (documented in VMSA-2018-0002) - Result of exploitation may allow for information disclosure from one Virtual Machine to another Virtual Machine that is running on the same host. 
  • Hypervisor-Assisted Guest Remediation (documented in VMSA-2018-0004) - This issue may allow for information disclosure between processes within the VM.
For Hypervisor-Specific remediation, all relevant patches already exist and are described in security advisory VMSA-2018-0002. VMware recommends applying described patches.

For Hypervisor-Assisted Guest Remediation, all relevant patches exist and are described in security advisory VMSA-2018-0004Important note: VMware does NO LONGER recommend to install the patches listed in security advisory VMSA-2018-0004. Further details are described in KB 52345. In short, Intel has notified VMware of recent sightings that may affect some of the initial microcode patches that provide the speculative execution control mechanism for a number of Intel Haswell and Broadwell processors. For servers using the Intel Haswell and Broadwell processors that have applied ESXi650-201801402-BG, ESXi600-201801402-BG, or ESXi550-201801401-BG VMware has workaround described in KB 52345. The workaround hides the speculative-execution control mechanism for virtual machines.

Rogue Data Cache Load or “Meltdown” (CVE-2017-5754) does not affect ESXi, Workstation, and Fusion because ESXi does not run untrusted user mode code, and Workstation and Fusion rely on the protection that the underlying operating system provides.

PERFORMANCE IMPACT
The virtualization specific performance impact of these mitigations should be negligible but performance impact of workloads inside guest OS is expected but workload dependent. There are rumors it might be somewhere between 10% and 30%.

The VMware performance team is currently evaluating the performance costs of the Meltdown/Spectre mitigations for vSphere and results will be published in VMware KB 52337.

Customers having vROps 6.6.0 and above can leverage specific dashboards to assess performance impact of Spectre & Meltdown patches using vRealize Operations. For more information read this blog post.

HOW TO UPDATE?
Please note, the update order is important.

To enable hardware support for branch target mitigation in vSphere, you should apply these steps, in the order shown below:
  1. Ensure you have EVC enabled on vSphere clusters
  2. For vCenter 6.x, in case you have external PSC, update all external PSCs to the latest patches of PSC 5.5 – 6.5 
  3. Update to the latest patches of vCenter 5.5 – 6.5 
  4. Apply the latest ESXi 5.5 – 6.5 patches
  5. Apply the CPU Microcode by BIOS or appropriate ESXi patch mentioned earlier in this article. Update 2018-01-13: Validate that CPU Microcode version is error prone. Some Intel CPUs are currently impacted. Check VMware KB 52345
For server firmware (BIOS) and CPU microcode for CVE-2017-5715 , you should obtain fixes from your hardware vendor or apply it via the latest ESXi patches.
ESXi650-201801402-BG microcode *
ESXi600-201801402-BG microcode *
ESXi550-201801401-BG hypervisor and microcode **
Update 2018-01-13: Important note: VMware does NO LONGER recommend to install the patches listed in security advisory VMSA-2018-0004 because of Intel sightings in ESXi Bundled Microcode Patches. I still personally believe that CPU microcode update via ESXi patch is the best from the operational perspective so I will update this blog post when fixed microcode will be bundled with ESXi patched again.

The reason why vCenter Server must be updated before ESXi is to avoid the issue with vMotion and EVC. An ESXi host that is running both a patched CPU microcode and a patched hypervisor will see new CPU features that were not previously available. These new features will be exposed to all Virtual Hardware Version 9+ VMs that are powered-on by that host. Because these VMs now see additional CPU features, vMotion to ESXi without the microcode or hypervisor patches applied will be prevented. There are three new CPU Features
  • IBRS
  • IBPB
  • STIBP
These three new CPU capabilities are not known to existing EVC baselines, therefore it seems to ESXi hosts as newer CPU model and prevents vMotion migration. EVC baselines are defined in vCenter and that's the reason why vCenter patch must be applied before ESXi patch and CPU microcode to add these CPU capabilities into EVC baselines and allow vMotions between ESXi hosts.

HOW TO VERIFY YOUR UPDATE WAS SUCCESSFUL AND YOU ARE NOT VULNERABLE?

You should verify it in different layers.

Hypervisor level
If you want to know if you have Intel microcode updated you can run following shell command on your ESXi host
if [ `vsish -e get /hardware/msr/pcpu/0/addr/0x00000048 2&>1 > /dev/null ;echo $?` -eq 0 ]; then echo -e "\nIntel Security Microcode Updated\n";else echo -e "\nIntel Security Microcode NOT Updated\n";fi 
On Intel machine with microcode update, you get the output "Intel Security Microcode Updated".
On Intel machine with microcode update, you get the output "Intel Security Microcode NOT Updated".

If you want to do the same for AMD microcode following command should work
if [ $(($((`vsish -e get /hardware/cpu/cpuList/0 | grep -i EBX | head -5 | tail -1 | awk -F: '{print $2}'` & 0x00001000)) >> 12)) -eq 1 ]; then echo -e "\nAMD Security Microcode Updated\n";else echo -e "\nAMD Security Microcode NOT Updated\n";fi 
Guest OS - Linux
  • Very nice blog post with the shell script is here “How to check Linux for Spectre and Meltdown vulnerability". Please note, that if you run the shell script inside guest OS on top of update ESXi host, the script will report that CPU microcode is updated even the physical CPU microcode is vulnerable. However, the information if Guest OS is patched is still valuable.
Guest OS - Microsoft Windows

OTHER VENDORS RESPONSES

Intel official response is available here
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr
Intel Analysis of Speculative Execution Side Channels is available here https://newsroom.intel.com/wp-content/uploads/sites/11/2018/01/Intel-Analysis-of-Speculative-Execution-Side-Channels.pdf

DELL official responseMeltdown and Spectre Vulnerabilities
DELL KB article with technical information: http://www.dell.com/support/article/SLN308588

HP response I have found so far: Resources to help mitigate Speculative Execution vulnerability in Intel and other processors
HP Support Customer Bulletina00039267en_us
Hewlett Packard Enterprise Product Security Vulnerability Alertshttp://h22208.www2.hpe.com/eginfolib/securityalerts/SCAM/Side_Channel_Analysis_Method.html

If you know links to other or better server vendors responses, please leave it in comments.

Hope this article is helpful. And as always, if you see some wrong information or you just have a question or some other experience, do not hesitate to write the comment. I will try to update this article in case something new is available.

Sources:

Tuesday, January 09, 2018

Admission Control "Dedicated fail-over hosts"

More then three years ago I published the blog post about "vSphere HA Cluster Redundancy". There are three algorithms
  • Define fail-over capacity by static number of hosts
  • Define fail-over capacity by reserving a percentage of cluster resources
  • Use dedicated fail-over hosts
I discussed first two algorithms very well but the third one "dedicated fail-over hosts" was described briefly by following words ...
This algorithm simply dedicates specified hosts to be unused during normal conditions and used only in case of ESXi host failure. Multiple fail-over dedicated hosts are supported since vSphere 5.0. This algorithm will keep your capacity and performance absolutely predictable and independent on VM reservations. You'll get exactly what you configure.
I have been asked recently by one my customer for some details behavior of  "dedicated fail-over hosts" method.

Question #1: How will be VMs restarted in case of single host failure when two hosts are dedicated for fail-over?

Answer: All impacted VMs are restarted and spread across both dedicated fail-over hosts.

Question #2: Is it possible to vMotion VMs to dedicated hosts for fail-over?

Answer: Of course not. These hosts are dedicated just for fail-over and vSphere Cluster is aware about it, therefore, it will not allow administrator nor DRS to migrate VMs there.

Question #3: What will happen with VMs when the failed host is back?

Answer: VMs will stay on on hosts dedicated for fail-over unless DRS will move them to other hosts. Based on my testing, DRS will do it probably just in case of lack of resources, therefore, some VMs can stay on dedicated fail-over hosts, which is not good. Therefore, vSphere administrator should check the cluster state after host failure and move all VMs out of dedicated fail-over hosts if DRS did not do it before.

Hope this helps broader VMware community to better understand VMware Admission Control. And as always, if you have some other question, opinion or different experience, please, feel free to leave the comment below.

Thursday, December 21, 2017

SDRS Initial Placement - interim storage lease between recommendation and provisioning

Every day we learn something new. In the past, I blogged about SDRS behavior on these blog posts


Recently (a few months ago),  I have been informed about interesting SDRS behavior which is not exposed through standard GUI nor advanced settings but available through API. Such functionality was not very well known even within VMware so I have decided to blog about it.

Long story short ...

vSphere API Call for SDRS Initial Placement can lease recommended storage resource for some time. 

What does it mean? Just after recommendations, SDRS can lease the storage space on recommended datastores to have an interim reservation for somebody who is, most probably, going to do provisioning. By default, SDRS do not lease storage space on recommended datastores, therefore, you can observe provisioning failures in some situations. I have simulated such situation in Test #3 of test plan available here. Such situations are not very common when you do manual provisioning but there is higher probability when automated provisioning is in use so you can experience such issues on environments with VMware vRealize Automation (vRA) or vCloud Director (vCD).

And now the secret I did not know ... SDRS has the solution for such issues since vSphere 5.1. When somebody (vRA, vCD, anybody else who wants to deploy VM) asked for SDRS recommendation via API call, that API call can include specific parameter (resourceLeaseDurationSec) which will instruct vSphere to block the recommended storage space on datastores only for provisioning of that specific SDRS recommendation. It's worth to mention, the resource leasing is released immediately after provisioning, therefore the time defined in resourceLeaseDurationSec is actually the maximum reservation time of the resource just in case somebody who wanted to do provisioning change his mind and decided to not deploy VM. This is to avoid unnecessary storage space reservations.
 
If you want to know details check API documentation. Here is what is written in vSphere API documentation about placeSpec.resourceLeaseDurationSecResource lease duration in seconds. If the duration is within bounds, Storage DRS will hold onto resources needed for applying recommendations generated as part of that call. Only initial placement recommendations generated by storage DRS can reserve resources this way.

Parameter resourceLeaseDurationSec is used in StoragePlacementSpec which encapsulates all of the inputs passed to the VcStorageResourceManager method recommendDatastoresVcStoragePlacementSpec is documented here.

So that sounds good, right? Well, there is one issue with this approach. SDRS can give provisioning application more recommendations (multiple datastores) which would lead to blocking more storage space than is really needed. VMware engineering is aware of this issue and at the moment works at least with vRA BU to solve it. As far as I know, the final solution will be a special SDRS setting to return single recommendation. However, this is planned as a specific integration optimization between SDRS and vRA provisioning.

Tuesday, December 19, 2017

What ESXi command will create kernel panic and result in a PSOD?

This is a very short post but I want to publish it at least for myself to find this trick much quickly next time.

Sometimes, especially during testing of vSphere HA, it can be useful to simulate PSOD (Purple Screen of Death). I did some googling and found the article "What ESXi command will create kernel panic and result in a PSOD?". Long story short, PSOD can be accomplished by following ESXi console command:
vsish -e set /reliability/crashMe/Panic 1
Of course, you have to SSH to particular ESXi host before you can run the command above.

All credits go to IT Pro Today article available here http://www.itprotoday.com/virtualization/q-what-esxi-command-will-create-kernel-panic-and-result-psod