/////////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////// #include "TFile.h" #include "TTree.h" #include "TBranch.h" #include "CompModel/TCafModel.hh" ClassImp(TCafModel) namespace { // CPU units (duals) acquired, in 2007 will need to buy the tape drives? // 2006 purchase: 10 racks x 40 dual boxes with 2GHz dual Opteron processors int kYearAcquired[] = { 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, -1} ; // int kNAcquired [] = { 256, 242, 244, 320, 400, 160, 160, -1, -1} ; int kNAcquired [] = { 256, 242, 244, 320, 400, 250, 200, -1, -1} ; float kCpuAcquired [] = { 1.66, 2.66, 3.00, 3.20, 4.0, 5.2, 6.8, 9.6, -1} ; // retirement plan: retire 4-year old nodes int kYearRetired[] = { 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, -1} ; int kNRetired [] = { 0, 0, 0, 0, 256, 242, 244, 320, } ; float kCpuRetired [] = { 0, 0, 0, 0, 1.66, 2.66, 3.0, 3.2 } ; // retirement worker nodes up to 305 will retire, up to 323 through fall // fileservers up to 092 will retire in the Fall'06 // space in GCC, for FY'06 purchase }; //_____________________________________________________________________________ TCafModel::TCafModel() { } //_____________________________________________________________________________ TCafModel::~TCafModel() { } //_____________________________________________________________________________ float TCafModel::CpuTotal(int Year) { // total Farm CPU (duals) in THz float cpu_total(0); for (int i=0; (kNAcquired[i] >= 0) && (kYearAcquired[i] < Year); i++) { cpu_total += kNAcquired[i]*kCpuAcquired[i]*2 ; } for (int i=0; (kNRetired[i] >= 0) && (kYearRetired[i] < Year); i++) { cpu_total -= kNRetired[i]*kCpuRetired[i]*2 ; } return cpu_total/1000.; } //_____________________________________________________________________________ float TCafModel::RetiredCpu(int Year) { // amount of CPU (THz) retired in a given year float cpu(0); for (int i=0; (kNRetired[i] >= 0); i++) { if (Year == kYearRetired[i]) { cpu += kNRetired[i]*kCpuRetired[i]*2 ; } } return cpu/1000.; } //_____________________________________________________________________________ int TCafModel::NNodesTotal(int Year) { // total Farm CPU (duals) int cpu_total(0); for (int i=0; (kNAcquired[i] >= 0) && (kYearAcquired[i] < Year); i++) { cpu_total += kNAcquired[i] ; } for (int i=0; (kNRetired[i] >= 0) && (kYearRetired[i] < Year); i++) { cpu_total -= kNRetired[i] ; } return cpu_total; } //_____________________________________________________________________________ float TCafModel::OpsEff(int Year) { return 0.95; }