• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >windows > Sun Grid Engine 大规模集群监控

Sun Grid Engine 大规模集群监控

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含sun grid engine,sun grid,bui grid鼠标右键,grid,grid是什么意思等服务器相关知识,网友希望可以进行参考

#!/usr/bin/perl
#!/bin/bash
## 最近查看队列使用情况 发现如下问题,用户使用SGE 集群的时候内存溢出
## 此程序用于查看SGE (Sun Grid Engine) 整体集群监控
##仅以此程序,帮助大家查看 自己任务状态,以免被杀!此工具归BGI所有,祝大家工作愉快!
=head1 Name
sge_cluster_queue.pl  -- choose the queue observation
=head1 Description
This program can choose the  bmk queue observation 
1) look for the  queue  jobs operation and who is working state
2) find the jobs number total test number,and the user over mem jobs,Jobs-ID,detailed mem \
3) statistics total use mem
=head1 Version
  Author: Li linji, lilinji@genomics.cn 
  Version: 1.0,  Date: 2012-7-30
=head1 Usage
  --queue   set  you want  look up queue (defined general.q)
  --mem     set  Use full details  queue Jobs and mem (check  over_mem,and jods-ID)
  --s       set  Task sort by (name,job,vf,mem && must set --mem)##defined name
  --t       set  Task state information  (defined run)
  --help    output help information to screen
=head1 Exmple
./sge_cluster_queue.pl   
perl sge_cluster_queue.pl
perl sge_cluster_queue.pl  -queue general.q
perl sge_cluster_queue.pl  -queue general.q -mem
perl sge_cluster_queue.pl  -queue general.q -mem -s vf
=cut
use Getopt::Long;
use FindBin qw($Bin $Script);
use File::Basename qw(basename dirname);
use Data::Dumper;
my $Sort||="name";
my $St||="r";
my ($help,$mem);
$queue_search ||= "general.q";
GetOptions(
    "help"=>\$help,
    "queue=s"=>\$queue_search,
    "mem"=>\$mem,
    "s=s"=>\$Sort,
    "t=s"=>\$St,
);
die `pod2text $0` if ($Help);
if ($Sort eq "1") {
    $Sort="name";
}elsif($Sort  eq "2"){
    $Sort="job";
}elsif($Sort eq "3"){
    $Sort="vf";
}elsif($Sort  eq "4"){
    $Sort="mem";
}
if ($Sort ne "vf" && $Sort ne "mem" && $Sort ne "name" && $Sort ne "job" ) {
    print STDERR <<SORt;
    -s :         1 or name : sort by name (default)
             2 or job :  sort by jobs number
             3 or vf :  sort by vf (need  -m )
             4 or mem : sort by mem (need  -m )
SORt
        exit 0;
if (!defined $mem &&  ($Sort eq "mem" || $Sort eq "vf" )) {
    print STDERR <<SORt;
          -mem : get mem info
        -s :
           3 or vf :  sort by vf (need  -m )
          4 or mem : sort by mem (need  -m )
SORt
        exit 0;
    }
}
###############################################################################
#my $group=shift;
#my $queue_search = shift;
######### ......, . grp ... ....################################################
################################################################################
### ....look users;
my @User;
my @users;
my $users=();
########may be change here#####
my $user_start=`cat /etc/passwd |grep 'home'|cut -f 1 -d :`;
chomp ($user_start);
@User=split /\n/,$user_start;
chomp(@User);
for (my $i=0;$i<@User;$i++){
push @users,"$User[$i]";
}
chomp (@users);
###################print userlist;
printf "the (公司) information list<<<<<<<<<<<<<<<( . o . )\n";
printf "User: @users\n";
printf "Please Look Queue information:>>>>>>>>O(._.)O~\n";
my %temp_users =();
#########################
#Definition search";    #
#########################
my $listinfo=`qstat -u @users`; ##### Look all  queue_test
my @task = split /\n/,$listinfo;
shift @task ;shift @task ;
my %out=();##$out{...}
my %statue=();## ..
my %Queue=();### ..
my %Job=();
my %For_sort=();### .sort ...sort ... $For_sort{$name}=info for sort;
my $jobs='';
################################### look each anyone test;
foreach my $job ( @task )
{
    $job=~s/^\s+//;
    my @tab=split /\s+/,$job;#### $tab[0] = job id ; $tab[3]= ... ; $tab[4] = .. ; $tab[7] = .. ;
    if ($tab[7]=~/(\S+)\@(compute-\d+-\d+)\./)
    {
        my $queue=$1;
        my $compute = $2;
        if ($queue eq $queue_search)
        {
            #$queue = $compute_grp{$compute};
        }
        else
        {
            next;
        }
        $Queue{$queue}=1;
        $Job{$tab[0]}{'queue'}=$queue;
        if (exists $out{$tab[3]}{'queue'}{$queue})
        {########## .... ....
            $out{$tab[3]}{'queue'}{$queue}++;
        }
        else
        {
            $out{$tab[3]}{'queue'}{$queue}=1;
        }
    }
    $statue{$tab[4]}=1;
    $Job{$tab[0]}{'status'}=$tab[4];
    $Job{$tab[0]}{'user'}=$tab[3];
    ###### ..sort
    if ($Sort eq "name")
    {
        $For_sort{$tab[3]}=$tab[3];
    }
    elsif($Sort eq "job" && $tab[4] eq $St)
    {
        $For_sort{$tab[3]}++;
    }
    ######
    $jobs.=$tab[0].',';
    if (exists $out{$tab[3]}{'status'}{$tab[4]} )
    { ########.. ..
        $out{$tab[3]}{'status'}{$tab[4]}++;
    }
    else
    {
        $out{$tab[3]}{'status'}{$tab[4]}=1;
    }
}
######################### .. ..group .... ...... ..... ....... .... > .... . ..id ..... - .....
my $overload=0;
if (defined $mem) {
    my $detail=`qstat -j $jobs`;###... .. ....
    my @jobinfos=split /={2,}/,$detail;####.......
    foreach my $info (@jobinfos) {
        if ($info =~/job_number:\s+(\d+)/) {
            my $jobnum=$1;### job id
            my $user=$Job{$jobnum}{'user'};
            my $status=$Job{$jobnum}{'status'};
            my $hard_mem=0;
            if ($info =~/hard resource_list:\s+virtual_free=(\S+)\n/) {
                $hard_mem=$1;### ... ..
                $hard_mem= MEM_GMKT ($hard_mem);
                ### .. sort
                if ($Sort eq "vf" && $St eq $status) {
                    $For_sort{$user}+=$hard_mem;
                }
                if (exists $out{$user}{'hard'}{'status'}{$status}) {
                    $out{$user}{'hard'}{'status'}{$status}+=$hard_mem;
                }else{
                    $out{$user}{'hard'}{'status'}{$status}=$hard_mem;
                }
                if (exists $Job{$jobnum}{'queue'}) {
                    my $queue=$Job{$jobnum}{'queue'};
                    if (exists $out{$user}{'hard'}{'queue'}{$queue}) {
                        $out{$user}{'hard'}{'queue'}{$queue}+=$hard_mem;
                    }else{
                        $out{$user}{'hard'}{'queue'}{$queue}=$hard_mem;
                    }
                    my $vmem=0;
                    while ($info =~/vmem=(\S+), maxvmem=\S+/g) {
                        my $mmm=$1;
                        if ($mmm ne 'N/A') {
                            $vmem+=MEM_GMKT ($mmm);
                        }
                    }
                    ### .. sort look over test list;
                    if ($Sort eq "mem" && $St eq $status) {
                        $For_sort{$user}+=$vmem;
                    }
                    my $over=$vmem-$hard_mem;
                    if ($over >0) {
                        my $intover=(int (10*$over+0.5))/10;
                        if (exists $out{$user}{'overid'}) {
                            $out{$user}{'overid'}.=','.$jobnum;
                            $out{$user}{'overmem'}.=','.$intover;
                            $out{$user}{'overnum'}+=1;
                            $out{$user}{'totalover'}+=$over;
                        }else{
                            $out{$user}{'overid'}=$jobnum;
                            $out{$user}{'overmem'}=$intover;
                            $out{$user}{'overnum'}=1;
                            $out{$user}{'totalover'}=$over;
                        }
                        $overload++;
                    }
                    if (exists $out{$user}{'mem'}{'queue'}{$queue}) {
                        $out{$user}{'mem'}{'queue'}{$queue}+=$vmem;
                    }else{
                        $out{$user}{'mem'}{'queue'}{$queue}=$vmem;
                    }
                    if (exists $out{$user}{'mem'}{'status'}{$status}) {
                        $out{$user}{'mem'}{'status'}{$status}+=$vmem;
                    }else{
                        $out{$user}{'mem'}{'status'}{$status}=$vmem;
             
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Sun Grid Engine 大规模集群监控

相关文章

  • Windows Server 2003 全新安装图文教程
  • ansible简单使用
  • Telnet是什么命令 Telnet命令的使用方法介绍
  • 四、配置开机自动启动Nginx + PHP【LNMP安装 】
  • 如何清除右键菜单里的无效与垃圾选项
  • 锐捷找不到网卡或网卡初始化失败的解决方案
  • apache中.htaccess不起作用
  • CMD下停止IP策略(IPSEC Services)服务连接3389
  • KVM虚拟化开源高可用方案(五)总结
  • 微软提供正确卸载IE7的方法并恢复IE6

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 如何成功清理重建CloudStack环境
    • rsync 如何排除文件同步指定的文件夹
    • 双网卡bond脚本
    • Apache报错 0x6eec38dc 指令引用的 0x00000000 内存不能为 read
    • Exchange Server 2010 邮箱数据库的恢复(移植)
    • apache伪静态与iis伪静态区别介绍
    • Windows Server 2008 R2安装Windows Phone SDK
    • Windows操作系统让我们养成了什么坏习惯
    • [趣图]恋爱就像TCP连接一样,是不可靠的
    • Web服务器和应用程序服务器的区别

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有