RDMA and SMB Direct

Remote Direct Memory Access (RDMA) is a technology that allows data to be written directly on tot he memory without involving the processor, cache or operating system. RDMA enables more direct data movement in and out of a server by implementing a transport protocol in the network interface card NIC. The technology supports a feature called zero-copy networking that makes it possible to read data directly from the main memory of one computer and write that data directly to the main memory of another computer.

  • Enabled by default in Windows Server 2016

  • RDMA capable network adapter

  • RDMA and SMB Multichannel must be enabled and running

  • Best used with 10 gigabit plus networks

rdma

SMB Direct is SMB over RDMA.

Network adapters that have RDMA can function at full speed with very low latency, while using very little CPU. For workloads such as Hyper-V or Microsoft SQL Server, this enables a remote file server to resemble local storage. SMB Direct includes:

  • Increased throughput: Leverages the full throughput of high speed networks where the network adapters coordinate the transfer of large amounts of data at line speed.
  • Low latency: Provides extremely fast responses to network requests, and, as a result, makes remote file storage feel as if it is directly attached block storage.
  • Low CPU utilization: Uses fewer CPU cycles when transferring data over the network, which leaves more power available to server applications.

Requires
– Two servers running Windows Server 2012 or later
– One or more network adapters with RDMA capability
– Disabling SMB multichannel and RDMA disables SMB direct

Advertisements

Server 2016 – Receive Side Scaling – RSS

RSS enables network adapters to distribute the kernel-mode network processing load across multiple processor cores in multi-core computers. The distribution of this processing makes it possible to support higher network traffic loads than would be possible if only a single core were to be used. In Windows Server 2012, RSS has been enhanced, including computers with more than sixty-four processors. RSS achieves this by spreading the network processing load across many processors and actively load balancing TCP terminated traffic.

When enabled, an network adapter I/O queue uses more than a single processor
core
If not enabled, uses a single core
– VMMQ has multiple queues and cores
– RSS older technology, but doesn’t have rigorous hardware requirements
Can be enabled on physical NIC (RSS)
Can be enabled on virtual NIC (vRSS)

You can use Virtual Receive Side Scaling (vRSS) to configure a virtual network adapter to load balance incoming network traffic across multiple logical processor cores in a VM or multiple physical cores for a host virtual Network Interface Card (vNIC).+

This configuration allows the load from a virtual network adapter to be distributed across multiple virtual processors in a virtual machine (VM), allowing the VM to process more network traffic more rapidly than it can with a single logical processor.

image2016-11-15+16_50_47

Load balance incoming network traffic across multiple virtual processors
With RSS it is physical network adapters and physical processor cores
– With vRSS it is Hyper-V network adapters and virtual processor cores
   vRSS requires that physical network adapters support VMQ
– Can’t use vRSS without VMQ capable adapters
– Run Get-NetAdapterVMQ as administrator to check if adapter supports VMQ

Server 2016 – Virtual Machine Multi Queues – VMMQ

Virtual Machine Device Queues (VMDq) is a technology that allows the network adapter to create multiple separate queues, distributing the processing load across multiple cores.

Without VMDq, traffic is processed by a single processing core. Incoming traffic is processed in the following sequence on a physical adaptor linked to a virtual switch with many virtual machines .

  • VMMQ allows multiple I/O queues on network adapters to map to multiple virtualprocessor cores on VMs

  • Each I/O queue has an affinity with a specific virtual processor core

  • Once enabled on physical NIC, enable in hardware acceleration section of virtualNIC

  • VM must be assigned multiple virtual cores to take advantage of VMMQ

Run Get-NetAdapterVMQ as Administrator to verify if adapter supports VMQ

 

Server 2016 – SMB Multi-channel

SMB Multichannel, a feature included with Windows Server 2012 R2 and Windows Server 2012 and part of the Server Message Block (SMB) 3.0 protocol, increases the network performance and availability of file servers.

SMB Multichannel enables file servers to use multiple network connections simultaneously. It facilitates aggregation of network bandwidth and network fault tolerance when multiple paths are available between the SMB 3.0 client and the SMB 3.0 server. This capability allows server applications to take full advantage of all available network bandwidth and makes them resilient to network failures.

SMB Multichannel provides the following capabilities:

  • Increased throughput. The file server can simultaneously transmit additional data by using multiple connections for high-speed network adapters or multiple network adapters.
  • Network fault tolerance. When clients simultaneously use multiple network connections, the clients can continue without interruption despite the loss of a network connection.
  • Automatic configuration. SMB Multichannel automatically discovers multiple available network paths and dynamically adds connections as necessary.

REQUIREMENTS; 

SMB Multichannel has the following requirements:

  • At least two computers that run on Windows Server 2012 R2, Windows Server 2012, or Windows 8 operating systems are required. No additional features have to be installed—SMB Multichannel is enabled by default.
  • At least one of the following configurations:
    • Multiple network adapters
    • One or more network adapters that support Receive Side Scaling (RSS)
    • One of more network adapters that are configured by using NIC Teaming
    • One or more network adapters that support remote direct memory access (RDMA)

So,

  • Use all available NIC in a computer to share file sharing load
  • Does not require NICs to be on the same subnet
  • SMB 1 and SMB 2 clients use a single NIC connection to retrieve files

SMB Multichannel provides the following capabilities:

  • Increased throughput. The file server can simultaneously transmit additional data by using multiple connections for high-speed network adapters or multiple network adapters.
  • Network fault tolerance. When clients simultaneously use multiple network connections, the clients can continue without interruption despite the loss of a network connection.
  • Automatic configuration. SMB Multichannel automatically discovers multiple available network paths and dynamically adds connections as necessary.

Server 2016 – Switch Embedded Teaming

SET is an alternative NIC Teaming solution that you can use in environments that include Hyper-V and the Software Defined Networking (SDN) stack in Windows Server 2016. SET integrates some NIC Teaming functionality into the Hyper-V Virtual Switch.+

SET allows you to group between one and eight physical Ethernet network adapters into one or more software-based virtual network adapters. These virtual network adapters provide fast performance and fault tolerance in the event of a network adapter failure.

Windows Server 2012 R2 doesn’t allow RDMA on NIC bound to NIC team or Hyper-
V virtual switch. Windows Server 2012 R2 required 2 sets of NIC, one for RDMA, one for regular IP.

SET allows one set of switches to be used for Hyper-V vSwitch with RDMA.
NICs support regular IP traffic as well as RDMA.

0216red_F2SDN_Figure3_hires

Hot to use PowerShell to manage System Center Configuration Manager

The easiest way is by launching the Configuration Manager console. In the upper left corner, there’s a blue rectangle. Click the white arrow in the blue rectangle, and choose Connect via Windows PowerShell.

cm

Now, you need to import the Configuration Manager module by using the Windows PowerShell Import-Module cmdlet. To import the Configuration Manager module, you will have to specify the path to the Configuration Manager module or change to the directory that contains the module. Here, we’re going to change to the module’s directory.

PS C:\>

PS C:\> CD ‘C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager’

PS C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager>

Then import the module;

Import-Module .\ConfigurationManager.psd1

To run the Configuration Manager cmdlets, you need to switch the path to the Configuration Manager site.

PS C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager>CD MSN

MSN – is my site code

PS MSN:\>

Confirm that the Configuration Manager module has been loaded by using the cmdlet below;

PS MSN:\> Get-CMSite

BuildNumber : 7958

Features : 0000000000000000000000000000000000000000000000000000000000000000 InstallDir : C:\Program Files\Microsoft Configuration Manager

Mode : 0

ReportingSiteCode :

RequestedStatus : 110

ServerName : cm1.company.pri

SiteCode : MSN

SiteName : MSN pri site

Status : 1

TimeZoneInfo : 000001E0 0000 000B 0000 0001 0002 0000 0000 0000 00000000 0000 0003 0000 0002 0002 0000 0000 0000 

Type : 2

Version : 5.00.7958.1000

System Center Configuration Manager SCCM Collection Queries

Some of the useful queries we used and still being used;

Client Collections

Collection for all Workstations.

  select

SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client

from SMS_R_System where SMS_R_System.OperatingSystemNameandVersion like

“%workstation%”

 

Collection of all Windows 10 clients.

  select

SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType,

SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client from

SMS_R_System

where SMS_R_System.OperatingSystemNameandVersion like “%workstation 10.0%”

Collection of all Windows 8.1 clients.

  select

SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client from

SMS_R_System

where SMS_R_System.OperatingSystemNameandVersion like “%workstation 6.3%”

Collection of all Windows 8 clients.

This query need to be limited to the All Workstations collection to work. If not it will also have Windows Server 2012 members as they share the same version number.

  select

SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client from

SMS_R_System

where SMS_R_System.OperatingSystemNameandVersion like “%workstation 6.2%”

 

Collection of all Windows 7 clients.

This query need to be limited to the All Workstations collection to work. If not it will also have Windows Server 2008 R2 members as they share the same version number.

  select

SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client from

SMS_R_System

where SMS_R_System.OperatingSystemNameandVersion like “%workstation 6.1%”

 

Collection for all Servers.

  select

SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client

from SMS_R_System where SMS_R_System.OperatingSystemNameandVersion like

“%server%”

 

Collection of all Windows 2012 R2 Servers.

  select

SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client from

SMS_R_System

where SMS_R_System.OperatingSystemNameandVersion like “%Server 6.3%”

 

Collection of all Windows 2012 Servers.

  select SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client from

SMS_R_System

where SMS_R_System.OperatingSystemNameandVersion like “%Server 6.2%”

 

Collection of all Windows 2008 R2 Servers.

  select SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client from

SMS_R_System

where SMS_R_System.OperatingSystemNameandVersion like “%Server 6.1%”

 

Collection of all Domain Controllers.

This query requires that the config manager client is installed and hardware inventory is turned on.

  select *  from  SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceId = SMS_R_System.ResourceId

where SMS_G_System_COMPUTER_SYSTEM.Roles like “%Domain_Controller%”

All Hewlet-Packard Systems

  select

SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,

SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client

from SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM on

SMS_G_System_COMPUTER_SYSTEM.ResourceId = SMS_R_System.ResourceId

where SMS_G_System_COMPUTER_SYSTEM.Manufacturer like “Hewlett-Packard%”

or SMS_G_System_COMPUTER_SYSTEM.Manufacturer like “HP%”

All Physical Systems

  select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,

SMS_R_SYSTEM.SMSUniqueIdentifier,

SMS_R_SYSTEM.ResourceDomainORWorkgroup,

SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_SYSTEM_ENCLOSURE on SMS_G_System_SYSTEM_ENCLOSURE.ResourceID = SMS_R_System.ResourceId

where SMS_G_System_SYSTEM_ENCLOSURE.ChassisTypes = “23” or

SMS_G_System_SYSTEM_ENCLOSURE.ChassisTypes = “17”

 

SQL Server Collection Query

select SMS_R_System.ResourceId, SMS_R_System.ResourceType, SMS_R_System.Name, SMS_R_System.SMSUniqueIdentifier, SMS_R_System.ResourceDomainORWorkgroup, SMS_R_System.Client from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_ADD_REMOVE_PROGRAMS_64 on SMS_G_System_ADD_REMOVE_PROGRAMS_64.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like “Microsoft SQL Server 200%” or SMS_G_System_ADD_REMOVE_PROGRAMS_64.DisplayName like “Microsoft SQL Server 20%”

 

All Windows Workstations

Select

SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System where SMS_R_System.OperatingSystemNameandVersion like ‘Microsoft Windows NT%Workstation%’

 

All Systems with HyperV Role

select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System  inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId  where SMS_G_System_SERVICE.DisplayName like “Hyper-V Virtual Machine Management”

 

SCCM All Laptops Collection

select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_SYSTEM_ENCLOSURE on SMS_G_System_SYSTEM_ENCLOSURE.ResourceID = SMS_R_System.ResourceId where   SMS_G_System_SYSTEM_ENCLOSURE.ChassisTypes in ( “8”, “9”, “10”, “14” )