250 :
root▲ ★:
これを、あげよう。
read.cgi に、
・ex11 anime を tiger サーバとして、
・ex12 ex13 live21 を cobra サーバとして、
それぞれ登録しました。
これで、LAが banana 並みでも人大杉になってしまう現象は、なおりました。
今、サーバ名できめうちになっていますが、
これをうまく判定するのは、どうしたらよかんべか。
具体的には、CPUの種別(Pen4, Xeon, Opteron)あたりをCな言語からとれると、よかったり。
251 :
root▲ ★:2005/06/02(木) 01:43:50 ID:???0 BE:5107878-##
%sysctl -a | grep Xeon
hw.model: Intel(R) Xeon(TM) CPU 2.80GHz
これ、つかうかぁ。
252 :
root▲ ★:2005/06/02(木) 02:09:19 ID:???0 BE:2280555-##
%./sample
AMD Opteron(tm) Processor 242
とれた、とれた。
これを、組み込むか。
#include <stdio.h>
#include <sys/types.h>
#include <sys/sysctl.h>
int main(void)
{
int mib[2];
char model_name[BUFSIZ];
size_t len;
mib[0] = CTL_HW;
mib[1] = HW_MODEL;
len = sizeof(model_name);
sysctl(mib, 2, &model_name, &len, NULL, 0);
printf("%s\n", model_name);
return 0;
}
253 :
root▲ ★:2005/06/02(木) 03:16:15 ID:???0 BE:1459744-##
read.cgi ver 05.0.1.1 2005/06/02
これで、今後新しいCPUがこない限り、埋め込みしなくて済むはず。
/****************************************************************/
/* GetHwModel */
/****************************************************************/
int GetHwModel(char *model_name, size_t len)
{
int mib[2];
mib[0] = CTL_HW;
mib[1] = HW_MODEL;
if (sysctl(mib, 2, model_name, &len, NULL, 0) == -1) return -1;
return 0;
}
/****************************************************************/
/* GetMaxLA */
/****************************************************************/
double GetMaxLA(CH2READ *ch2)
{
char model_name[BUFSIZ];
if(GetHwModel(model_name, sizeof(model_name)) == -1) return maxLAbanana ;
if(strstr(model_name,"Opteron")) return maxLAcobra ;
if(strstr(model_name,"Xeon")) return maxLAtiger ;
if(strstr(model_name,"Pentium")) return maxLAbanana ;
return maxLAbanana ;
}