@@ -106,6 +106,16 @@ func node2k() *Node {
106106 ID : 1 ,
107107 Grade : numalib .Performance ,
108108 BaseSpeed : 1000 ,
109+ }, {
110+ ID : 2 ,
111+ Grade : numalib .Performance ,
112+ BaseSpeed : 1000 ,
113+ Disable : true ,
114+ }, {
115+ ID : 3 ,
116+ Grade : numalib .Performance ,
117+ BaseSpeed : 1000 ,
118+ Disable : true ,
109119 }},
110120 OverrideWitholdCompute : 1000 , // set by client reserved field
111121 },
@@ -137,7 +147,8 @@ func node2k() *Node {
137147 },
138148 ReservedResources : & NodeReservedResources {
139149 Cpu : NodeReservedCpuResources {
140- CpuShares : 1000 ,
150+ CpuShares : 1000 ,
151+ ReservedCpuCores : []uint16 {2 , 3 },
141152 },
142153 Memory : NodeReservedMemoryResources {
143154 MemoryMB : 1024 ,
@@ -248,6 +259,38 @@ func TestAllocsFit(t *testing.T) {
248259 must .Eq (t , 1000 , used .Flattened .Cpu .CpuShares )
249260 must .Eq (t , []uint16 {0 }, used .Flattened .Cpu .ReservedCores )
250261 must .Eq (t , 1024 , used .Flattened .Memory .MemoryMB )
262+
263+ a3 := & Allocation {
264+ AllocatedResources : & AllocatedResources {
265+ Tasks : map [string ]* AllocatedTaskResources {
266+ "web" : {
267+ Cpu : AllocatedCpuResources {
268+ CpuShares : 1000 ,
269+ },
270+ Memory : AllocatedMemoryResources {
271+ MemoryMB : 512 ,
272+ },
273+ },
274+ },
275+ },
276+ }
277+
278+ // Should fit one allocation
279+ fit , dim , used , err = AllocsFit (n , []* Allocation {a3 }, nil , false )
280+ must .NoError (t , err )
281+ must .True (t , fit , must .Sprintf ("failed for dimension %q" , dim ))
282+ must .Eq (t , 1000 , used .Flattened .Cpu .CpuShares )
283+ must .Eq (t , []uint16 {}, used .Flattened .Cpu .ReservedCores )
284+ must .Eq (t , 512 , used .Flattened .Memory .MemoryMB )
285+
286+ // Should not fit second allocation
287+ fit , dim , used , err = AllocsFit (n , []* Allocation {a3 , a3 }, nil , false )
288+ must .NoError (t , err )
289+ must .False (t , fit )
290+ must .Eq (t , "cpu" , dim )
291+ must .Eq (t , 2000 , used .Flattened .Cpu .CpuShares )
292+ must .Eq (t , []uint16 {}, used .Flattened .Cpu .ReservedCores )
293+ must .Eq (t , 1024 , used .Flattened .Memory .MemoryMB )
251294}
252295
253296func TestAllocsFit_Cores (t * testing.T ) {
@@ -649,8 +692,23 @@ func TestScoreFitBinPack(t *testing.T) {
649692 Cores : []numalib.Core {{
650693 ID : 0 ,
651694 Grade : numalib .Performance ,
652- BaseSpeed : 4096 ,
695+ BaseSpeed : 2048 ,
696+ }, {
697+ ID : 1 ,
698+ Grade : numalib .Performance ,
699+ BaseSpeed : 2048 ,
700+ }, {
701+ ID : 2 ,
702+ Grade : numalib .Performance ,
703+ BaseSpeed : 2048 ,
704+ Disable : true ,
705+ }, {
706+ ID : 3 ,
707+ Grade : numalib .Performance ,
708+ BaseSpeed : 2048 ,
709+ Disable : true ,
653710 }},
711+ OverrideWitholdCompute : 2048 , // set by client reserved field
654712 },
655713 },
656714 Memory : NodeMemoryResources {
@@ -661,7 +719,8 @@ func TestScoreFitBinPack(t *testing.T) {
661719 node .NodeResources .Compatibility ()
662720 node .ReservedResources = & NodeReservedResources {
663721 Cpu : NodeReservedCpuResources {
664- CpuShares : 2048 ,
722+ CpuShares : 2048 ,
723+ ReservedCpuCores : []uint16 {2 , 3 },
665724 },
666725 Memory : NodeReservedMemoryResources {
667726 MemoryMB : 4096 ,
0 commit comments