$free_space = {
"node1" => {
"cores" => 12,
"mem" => 200
},
"node2" => {
"cores" => 12,
"mem" => 500
},
...
}
####
cores memory node
----- ------ ----
12 400 node456
12 400 node534
12 350 node23
11 500 node12
11 200 node3
10 900 node10
####
my %CoreMemNodes = (); #HoA -> -> (node1,node2,..)
foreach my $node (keys %free_space) {
push @{ $CoreMemNodes{$free_space{$node}{'cores'}}{$free_space{$node}{'mem'}} }, $node;
}
foreach my $free_cores (sort { $b <=> $a } keys %CoreMemNodes) {
foreach my $free_mem (sort { $b <=> $a } keys %{ $CoreMemNodes{$free_cores} }) {
foreach my $node (sort @{ $CoreMemNodes{$free_cores}{$free_mem} }) {
print "SORTED:$free_cores $free_mem $node\n";
}
}
}