2015-04-15 3 views
1

Я использую lsload -I io в LSF для измерения использования ввода-вывода на наших узлах, и если значения io превышают 9999, он превращается в научный формат, например 1e+04 или 4e+04. Есть ли способ получить фактические цифры в целочисленном (а не научном) формате?может загрузить печать в стандартном целочисленном формате?

ответ

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 
Смежные вопросы