1

lsload -I io在 LSF 中使用来测量节点上的 IO 使用情况,如果 io 值高于 9999,它会变成科学格式,例如1e+04or 4e+04。有没有办法以整数(而不是科学)格式获取实际数字?

4

1 回答 1

1

我似乎无法通过现有的 lsload 命令找到一种方法,但您可以使用 API 编写一个简单的命令为您获取它。

这是一些(非常特别的)示例代码,用于将所有主机上的“io”负载作为浮点数返回,您可以修改它来做一些花哨的事情,比如给您想要的主机等。

ls_ioload.c:

#include <stdio.h>
#include <stdlib.h>
#include <lsf/lsf.h>


int main(int argc, char *argv[]) {
    struct hostLoad* hL;
    int numhosts = 0;
    char* hostnames[256];
    char* indices[] = { "io" , NULL };
    char** nlp = indices;
    int i;

    hL = ls_loadinfo(NULL,&numhosts,OK_ONLY|IGNORE_RES,NULL,hostnames,0,&nlp);
    if( !hL ){
        ls_perror("ls_ioload");
        exit(-10);
    }

    if( nlp[0] ){
        printf("HOST\t%s\n",nlp[0]);
        for(i = 0; i < numhosts; i++){
            printf("%s\t%f\n",hL[i].hostName,hL[i].li[0]);
        }
    }
    exit(0);
}

您可以使用以下内容进行编译:

gcc -o ls_ioload -I$LSF_ENVDIR/../9.1/include ls_ioload.c $LSF_ENVDIR/../9.1/linux2.6-glibc2.3-x86_64/lib/liblsf.a

我的小型单主机集群上的示例输出:

[~]$ lsload -I io
HOST_NAME       status    io
hostA               ok  1e+4

[~]$ ./ls_ioload
HOST    io
hostA   12074.595703
于 2015-04-16T16:22:13.923 回答