Initial commit
[com/gs-lite.git] / bin / pin_processes.pl
diff --git a/bin/pin_processes.pl b/bin/pin_processes.pl
new file mode 100755 (executable)
index 0000000..4fdbec7
--- /dev/null
@@ -0,0 +1,65 @@
+#! /usr/bin/perl
+
+# ------------------------------------------------
+#   Copyright 2014 AT&T Intellectual Property
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+# -------------------------------------------
+
+
+$infl = "/var/log/gstrace";
+
+if(scalar(@ARGV)>0){
+       $infl = $ARGV[0];
+}
+
+open I,$infl or die "Can't open input log file $infl\n";
+
+%rts_pids= ();
+%hfta_pids = ();
+while($line=<I>){
+       if($line =~ /rts:\[.*\]: Started Logging/){
+               %rts_pids= ();
+               %hfta_pids = ();
+       }
+       if($line =~ /hfta_(\d+):\[(\d+)\]: Started Logging/){
+               $name = "hfta_" . $1;
+               $hfta_pids{$name} = $2;
+       }
+       if($line =~ /rts:\[(\d+)\]: Init LFTAs for (\w+)/){
+               $name = "rts " . $2;
+               $rts_pids{$name} = $1;
+       }
+}
+
+#foreach $k (keys(%rts_pids)){
+#      print "$k, ",$rts_pids{$k},"\n";
+#}
+#foreach $k (keys(%hfta_pids)){
+#      print "$k, ",$hfta_pids{$k},"\n";
+#}
+               
+open C,"pinning_info.csv" or die "Can't open pinning_info.csv\n";
+
+while($line=<C>){
+       chomp($line);
+       @flds = split /,/,$line;
+       if(exists($rts_pids{$flds[0]})){
+               $pinning_cmd = "taskset -pc $flds[1] ". $rts_pids{$flds[0]};
+       }
+       if(exists($hfta_pids{$flds[0]})){
+               $pinning_cmd = "taskset -pc $flds[1] ". $hfta_pids{$flds[0]};
+       }
+       print "Executing $pinning_cmd\n";
+       system($pinning_cmd);
+}
+