1: A benchmark that instantiates N classads, adds A attributes into it, and then deletes them. Compare execution time and size b/w new and old classads. *:: _Nick_ *DONE* -2: A benchmark that instantiates N classads, then does a constraint evaluation on all of them. Compare execution time and size b/w new and old classads. +1: A benchmark that instantiates N classads, then does a constraint evaluation on all of them. Compare execution time and size b/w new and old classads. *:: _Nick_ *DONE* -3: Grab the output of condor_status -l off one of the collectors (?) on a pool to get all the machine classads in the pool into a text file. Suck this up into a program which instantiates a classad for each of these machines. (Maybe make 10 instances of classads for each machine to magnify results). Check memory footprint; compare b/w new and old classads. +1: Grab the output of condor_status -l off one of the collectors (?) on a pool to get all the machine classads in the pool into a text file. Suck this up into a program which instantiates a classad for each of these machines. (Maybe make 10 instances of classads for each machine to magnify results). Check memory footprint; compare b/w new and old classads. *:: _Nick_ *Done* -4: Similarly with a job queue, grab the job classads, and suck them into a program which instantiates classads for each job in the text file. (Magnify as needed). Check memory footprint; compare b/w new and old classads. +1: Similarly with a job queue, grab the job classads, and suck them into a program which instantiates classads for each job in the text file. (Magnify as needed). Check memory footprint; compare b/w new and old classads. *:: _Nick_ *Done* {subsection: Analyze data, determine whether to procede or not} -*: Monday, June 1, 2009 +*: Monday, June 1, 2009: All of FW? {subsection: Conversion} {wiki:ClassAdConversionTimeDetailedEstimates Detailed time estimates for individual {quote:ClassAd} methods} are also available. {wiki:ClassAdConversionTodo The ClassAd conversion TODO} has more details on these individual blocks. {subsubsection: Pre-Flag Day Tasks} -*: Compatibility functions block 1: -*:: ClassAd::Assign() *DONE* -*:: ClassAd::LookupString(MyString) *DONE* -*:: ClassAd::Insert(const char*) *DONE* -*:: ClassAd::put() -*:: ClassAd::initFromStream() -*:: ClassAd::AssignExpr() *DONE* -*:: ClassAd::clear() *DONE* -*:: ClassAd::EvalString(const char*, const class AttrList*, char**) -*:: ClassAd::EvalString(const char*, const class AttrList*, MyString&) -*:: ClassAd::NextNameOriginal() *DONE* -*:: ClassAd::ResetName() *DONE* -*:: ClassAd::sPrintExpr() -*:: ClassAd::NextDirtyExpr() -*:: ClassAd::SetDirtyFlag() -*:: ClassAd::GetDirtyFlag() -*:: ClassAd::GetReferences() -*:: ClassAd::ChainCollapse() -*:: ClassAd::EscapeStringValue() -*:: ClassAd::CopyAttribute() -*:: ClassAd::fPrintAsXML() -*:: ClassAd::sPrintAsXML() -*:: ClassAd::IsValidAttrValue() -*: Write helper functions for these methods which we can't emulate transparently: -*:: ExprTree::PrintToNewStr() *DONE* -*:: ExprTree::PrintToStr() *DONE* -*:: ExprTree::EvalTree() -*: Add {quote:ClassAds} functions that are in old {quote:ClassAds} but not in new {quote:ClassAds}: -*:: stringListSize() -*:: stringListSum() -*:: stringListAve() -*:: stringListMin() -*:: stringListMax() -*:: stringListMember() -*:: stringListIMember() -*:: stringListRegexpMember() - - -{subsection: Flag Day Tasks} - -*: Change most or all references to {quote:ClassAd} and {quote:AttrList} with {quote:CompatClassAd}. -*: Swap in Varghese's new {quote:ClassAdList} class. -*: Fix up the one or two callsites in matchmaker.cpp that move an ad from one {quote:ClassAdList} to another. -*: The following methods will need some fixing at the callsites: -*:: ClassAd::Insert(ExprTree*) -*:: ClassAd::Lookup() -*:: ExprTree::RArg() -*:: ExprTree::LArg() -*:: ExprTree::PrintToNewStr() -*:: ExprTree::EvalTree() -*:: ClassAd::NextExpr() -*:: ClassAd(char*,char) -*:: ExprTree::PrintToStr() -*:: ExprTree::DeepCopy() -*:: ExprTree::MyType() -*:: ClassAd::ExchangeExpressions() *DONE* -*:: ClassAd::unchain() *DONE* -*:: ClassAd::RestoreChain() *DONE* -*:: AttrList::put() +1: Complete round 1 of performance upgrades to new {quote: ClassAds} [ ]: Will, Nick +June 8 -{subsection: Post-Flag Day Tasks} +1: Scrub through old {quote:ClassAds} for other hidden / unknown features [1 day]: Will +June 9 -*: As time permits, rewrite callsites to make {quote:CompatClassAd} unnecessary. The modified callsites can either use native new {quote:ClassAd} methods or newly-written free-standing functions. -*:: Replace all usage of attribute {quote:CurrentTime} with {quote:ClassAd} function time(). This can start before the flag day. +1: Compatibility functions block {quote: #1} [3 days]: Nick, Jaime +*:: June 8 + +1: Compatibility functions block {quote: #2} [4 days]: Nick, Jaime, Will +*:: June 10 + +1: Write helper functions for these methods which we can't emulate transparently [4 hours]: Will +*:: June 11 + +1: Add {quote:ClassAds} functions that are in old {quote:ClassAds} but not in new {quote:ClassAds} [2 days]: Nick +*:: June 12 + +{subsubsection: Flag Day Tasks} + +1: Change most or all references to {quote:ClassAd} and {quote:AttrList} with {quote:CompatClassAd} [4 hours]: Jaime, Will +*:: June 15 + +1: Swap in Varghese's new {quote:ClassAdList} class [?]: Jaime +*:: June 16 + +1: Fix up the one or two callsites in matchmaker.cpp that move an ad from one {quote:ClassAdList} to another [4 hours]: Will +*:: June 17 + +1: Fix up remaining callsites [5 days]: Nick, Jaime, Will +*:: June 23 + +{subsection: Other items revealed in testing}