read.cgi再開発スレ Part2

このエントリーをはてなブックマークに追加
250root▲ ★
これを、あげよう。

read.cgi に、

・ex11 anime を tiger サーバとして、
・ex12 ex13 live21 を cobra サーバとして、

それぞれ登録しました。
これで、LAが banana 並みでも人大杉になってしまう現象は、なおりました。

今、サーバ名できめうちになっていますが、
これをうまく判定するのは、どうしたらよかんべか。

具体的には、CPUの種別(Pen4, Xeon, Opteron)あたりをCな言語からとれると、よかったり。
251root▲ ★:2005/06/02(木) 01:43:50 ID:???0 BE:5107878-##
%sysctl -a | grep Xeon
hw.model: Intel(R) Xeon(TM) CPU 2.80GHz

これ、つかうかぁ。
252root▲ ★: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;
}
253root▲ ★: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 ;
}