Filtering and Sorting Lists of Objects
When retrieving jobs, tasks, and nodes, you can filter and sort the results. The following C# and C++ examples show how to filter the nodes that you want to retrieve.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Hpc.Scheduler; using Microsoft.Hpc.Scheduler.Properties; namespace Filtering_and_Sorting_Lists_of_Objects { class Program { static void Main(string[] args) { IScheduler scheduler = new Scheduler(); ISchedulerCollection nodes = null; IFilterCollection filters = null; ISortCollection sortOn = null; try { scheduler.Connect("localhost"); // Specify the filter criteria. filters = scheduler.CreateFilterCollection(); filters.Add(FilterOperator.GreaterThanOrEqual, PropId.Node_NumCores, 1); filters.Add(FilterOperator.HasBitSet, PropId.Node_State, NodeState.Online); // Specify the sort criteria sortOn = scheduler.CreateSortCollection(); sortOn.Add(SortProperty.SortOrder.Ascending, PropId.Node_NumCores); sortOn.Add(SortProperty.SortOrder.Descending, PropId.Node_CpuSpeed); // Get the list of nodes that match the filter criteria // and return them in the specified sort order. nodes = scheduler.GetNodeList(filters, sortOn); if (nodes.Count > 0) { Console.WriteLine("Nodes matching filter criteria:"); Console.WriteLine("Name\t\tCores\tCPU Speed\tMemory"); foreach (ISchedulerNode node in nodes) { Console.WriteLine("{0}\t{1}\t{2:f2} GHz\t{3:f2} GB", node.Name, node.NumberOfCores, node.CpuSpeed / 1000.0, node.MemorySize / 1000.0); } } else { Console.WriteLine("No nodes match the filter criteria."); } } catch (Exception e) { Console.WriteLine(e.Message); } } } }
Related topics
Show: