摘要
为了支持绿色IT行动,随着Windows HPC Server 2008 R2 (SP1)的发布,我们在Windows HPC Server 2008 R2 (SP1) Monitoring Management Pack 添加了两个可配置的规则:“基于时间的能耗管理规则”和“基于利用率的能耗管理规则”
· 基于时间的能耗管理规则
此规则可以在一周的某几天和一天的某时段内,将一部分计算节点休眠以降低能耗。
· 基于利用率的能耗管理规则
此规则通过监控一段时间内集群的负载状况和作业队列长度,以决定是否将部分计算节点休眠以降低能耗。
此规则定义了三个级别的集群可用率,每一次休眠的条件触发时,集群的可用率将调整到下一个级别;另一方面,当唤醒的条件触发时,集群的可用率将调整到上一个级别。
配置规则
在默认情况下,以上两个规则都被禁用。在SCOM服务器导入Windows HPC Server 2008 R2 Monitoring Management Pack后,管理员可以方便地启用、配置规则。
打开SCOM的界面,进入“Authoring”界面,选择“规则”,查询关键字“Power Management”,你就可以发现这两个规则,如下图所示:
下面是一些重要配置的默认值,管理员也可以对默认值进行修改
Calendar-based Rule
Parameter Name
Default Value
Notes
Enabled
False
The rule is disabled by default
Start Time
0:00
The time each day when power-saving mode for compute node starts.
End Time
6:00
The time each day when power-saving mode for compute node ends.
Exclude Days
A list of days each week when compute nodes are excluded from entering power-saving mode. The “exclude days” format is like: “Saturday, Sunday”
Power On Percentage
70
The percentage of compute nodes that will remain power on during the power-saving mode
Consumption-based Rule
HighCapacityLevel
100
The percentage of high compute node capacity definition
MediumCapacityLevel
80
The percentage of medium compute node capacity definition
LowCapacityLevel
60
The percentage of low compute node capacity definition
UpperQueueLength
5
The length of the job queue above which the rule can cause the compute nodes to reach a higher capacity level
LowerQueueLength
1
The length of the job queue below which the rule can cause the compute nodes to reach a lower capacity level
LowConsumption
40
The compute node consumption percentage below which the rule can cause the compute nodes to reach a lower capacity level
Number of Samples
6
The number of samples to identify the LowConsumption which can push the compute nodes to enter a lower capacity level, the sampling interval is following “interval seconds”
Interval Seconds
300
The sampling interval, default is 300 seconds.
节能性能评估
为了评估节能性能以及对作业吞吐量的影响,我们进行了以下实验
(1) 安装一个HPC集群,该集群包含1个头节点,1个代理节点以及4个计算节点
(2) 模拟一个典型的工作日内的作业提交情况:
同时,作业运行时间分布如下:
(3) 在以下三种情况比较节能性能以及对作业吞吐量的影响
a. 禁用能耗管理规则
b. 仅启用时间能耗管理规则
c. 仅启用利用率能耗管理规则
注意:
我们在实验中对两个规则的参数设置作了调整:
· 时间规则:
o 设置StartTime为22:00, EndTime 为7:00, PowerOnPercentage为60%
· 利用率规则
o 设置UpperQueueLength为2.
下面是实验结果:
· 节能效率
我们使用休眠的节点数量乘以休眠的时间来衡量节省的能耗。在使用时间规则时,有2个节点从22:00至7:00处于休眠状态;使用利用率规则,有2个节点从21:00至9:00处于休眠状态。两种规则都起到了很好的节能效果,相比之下,利用率规则更胜一筹。
· 可用核利用率
利用率规则取得了最高的可用核利用率(49.1%),其次是时间规则(47.1%)。在没用启用规则的情况下,利用率为42.7%。
· 对作业吞吐量的影响
作业吞吐量代表了每小时完成的作业的平均数量;启用两个规则,对作业吞吐量没有影响。
· 对作业周转时间的影响
作业周转时间代表了一个作业等待时间与作业运行时间的比率。在启用利用率规则之后,作业周转时间有微幅提高(从0.436增长到0.437);时间规则对作业周转时间没有影响。
结论
基于以上的模拟评估,在不影响作业吞吐量和作业周转时间的前提下,能耗管理规则能提高集群的能耗效率,真正实现集群的绿色ITJ
原文发表地址:英文:Scale-out computing on DevLabs 中文: 在DevLabs上的扩展计算原文发表时间:26 Jan 2011 10:30 AM
今天我们在DevLabs上建立新的技术计算(Technical Computing-TC)项目。一些技术会被作为技术计算计划的一部分开发出来, 这些项目为你提供学习这些技术的机会,能更早地获取代码,从而提供一些对TC相关的创新项目的反馈。
去年五月, 我写过一篇关于Micorsoft的技术计算计划的博文,这个倡议旨在能够赋予世界上最重要的问题解决者能最优化地利用计算资源的权利。 这些领域的专家常常要不就自己开发代码,要不就依赖别的开发人员来开发软件以实现他们的工作。TC计划给予那些开发人员和领域专家突破性的开发工具和架构来将工作做到最好。
TC计划自创立之初已经踏出非常重要的第一步。Visual Studio 2010支持开发、调试和优化多核应用程序,已经在各种不同的行业和领域获得广泛采用。11月,我们发布高性能计算服务器(HPC Server)2008 R2的Service Pack1。它整合了Windows 云计算周期,能很简单地将并行应用程序从群集扩展到云。这只是开始。加入TC计划的团队正在非常努力地开发新的出色的解决方案,以将所有现代和未来计算所拥有的全部都带去给开发人员,领域专家和IT专业人士等等。。
今天的新TC项目正在准备采取下一步行动。
TPL 数据流- 实现并行和并发的.NET应用程序
.NET 4中引入了任务并行库(TPL)、并行循环、并发数据结构、并行LINQ(PLINQ) 等等,所有这些都统称为.NET Framework的并行扩展。 TPL数据流是其中的新成员, 位于所有任务、同步集合与更多其他扩展之上,从而利用数据流的理念而构建的强大而有效的基于.NET的并发系统的开发。该技术依赖于基于进程中消息传送和异步流水线的技术,灵感大部分来自于Visual C++ 2010异步代理库和DevLab的Axum语言。TPL数据流为数据缓存、数据处理提供解决方案,构建高吞吐、低延迟的数据处理系统和基于代理/参与者的系统。 TPL数据流还被设计用来和C#与Visual Basic中的新异步语言功能集成——我在之前的博客中写过的。
下面,你们将看到一个在C#中使用数据流块来安全异步有效地处理进入请求的“agent”示例。
Dryad – 支持数据密集型应用程序
作为微软研究院的先锋,Dryad, DSC和DryadLINQ是一系列在Windows HPC Server 2008 RC Service Pack 1上支持数据密集型计算的应用程序。 这些技术实现在很多不同类型的应用程序中——包括数据挖掘应用程序、图像和流处理和各种不同的极大的科学计算——高效率地处理大量数据。Dryad和DSC在群集上运行以支持数据密集型计算并管理分布在群集中的数据。而DryadLINQ则允许开发人员使用熟悉的LINQ编程模型创建数据密集型和计算密集型.NET应用程序。
下面你能看到使用Dryad来加载文本日志数据的代码。 那个数据被合并到集群中处理, 然后结果会显示回客户端:
ublic static IEnumerable GeoIp(string logStream, string geoStream){DistributedData logLinesTable = DistributedData.OpenAsText(logStream);DistributedData geoIpTable = DistributedData.OpenAsText(geoStream);
// Join the two tables on the common key (IP Address)IEnumerable joined = logLinesTable.Join(geoIpTable,l1 => l1.Split(‘ ‘).First(),l2 => l2.Split(‘ ‘).First(),(l1, l2) => l2).AsEnumerable();
return joined;}
public static void Main(){// Load log and geo data into DSCConsole.WriteLine(“Loading data”);File.ReadLines(“log.txt”).AsDistributed().ExecuteAsText(“hpcdsc://localhost/Samples/log”);File.ReadLines(“geo.txt”).AsDistributed().ExecuteAsText(“hpcdsc://localhost/Samples/geo”);
// Run the queryConsole.WriteLine(“Running query”);IEnumerable results =GeoIp(“hpcdsc://localhost/Samples/log”, “hpcdsc://localhost/Samples/geo”);
// Print out the resultsConsole.WriteLine(“Displaying results”);foreach (var entry in results) Console.WriteLine(entry);}
Sho – 赋予你灵活开发原型进行数据分析的权利
也是始于微软研究院, Sho对从事技术计算工作的人提供了一个作数据分析和科学计算的交互式环境。 它让你通过.NET库文件无缝连接到写在IronPython中的脚本,实现快速敏捷的原型开发。 环境包括针对线性代数和数据可视化的强大而高效的库文件,二者都可以通过任何.NET 语言使用, 是一个可以实现快速开发的功能齐全的交互外壳程序。Sho自带处理大规模并行计算的程序包(通过Windows HPC Server和Windows Azure)、统计与优化、以及一些能让你易于创建和共享自己的程序包的扩展包机制。
如你在下图所见,Sho提供一个允许你即时以文本和图形方式呈现的编写和查看代码的方式。
试试看吧
我们下一步是往DevLabs添加一个pre-beta状态里的额外的技术计算项目,从而能更早地得到你们的反馈和意见,帮忙指导这些技术往正确的方向发展。 期待能收到你们的反馈。
Namaste!
有客户问,如何从HPC的报表数据库中查询某段时间某个计算节点上在运行什么作业,以下是我的答卷。
function Global:Query-JobHistory([parameter(Mandatory=$true)][string] $NodeName, [parameter(Mandatory=$true)][DateTime] $StartTime, [parameter(Mandatory=$true)][DateTime] $EndTime) { $connection = New-Object System.Data.SqlClient.SqlConnection("Data Source=.\computecluster;Initial Catalog=HpcReporting;Integrated Security=True;") $connection.Open() $cmd = $connection.CreateCommand() $cmd.CommandText = "SELECT DISTINCT JobID FROM AllocationHistory INNER JOIN Node ON AllocationHistory.NodeId = Node.NodeId WHERE NodeName=@NodeName AND StartTime <= @EndTime AND EndTime >= @StartTime ORDER BY JobId" $cmd.Parameters.AddWithValue("@NodeName", $NodeName.ToUpperInvariant()) | out-null; $cmd.Parameters.AddWithValue("@StartTime", $StartTime) | out-null; $cmd.Parameters.AddWithValue("@EndTime", $EndTime) | out-null; $reader = $cmd.ExecuteReader(); while ($reader.Read()) { $reader.GetInt32(0); } $reader.Close() $connection.Close() }
使用步骤为:
1)保存以上脚本到本地磁盘,比如存为c:\scripts\Query-JobHistory.ps1
2)以管理员身份运行PowerShell,执行以下命令
Set-ExecutionPolicy RemoteSigned
c:\scripts\Query-JobHistory.ps1
Query-JobHistory -NodeName:PAERSCBBLA0863 -StartTime:"02/17/2011 16:45:00" -EndTime:"02/17/2011 16:46:00"