Page History
New ClassAd Conversion TimeLine
Benchmarks
See ticket #227 for details on this work.
- 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
- 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
- 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
- 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
Analyze data, determine whether to procede or not
- Monday, June 1, 2009
Conversion
Detailed time estimates for individual {quote:ClassAd} methods are also available. The ClassAd conversion TODO has more details on these individual blocks.
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 ClassAds functions that are in old ClassAds but not in new ClassAds:
- stringListSize()
- stringListSum()
- stringListAve()
- stringListMin()
- stringListMax()
- stringListMember()
- stringListIMember()
- stringListRegexpMember()
Flag Day Tasks
- Change most or all references to ClassAd and AttrList with CompatClassAd.
- Swap in Varghese's new ClassAdList class.
- Fix up the one or two callsites in matchmaker.cpp that move an ad from one 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()
Post-Flag Day Tasks
- As time permits, rewrite callsites to make CompatClassAd unnecessary. The modified callsites can either use native new ClassAd methods or newly-written free-standing functions.
- Replace all usage of attribute CurrentTime with ClassAd function time(). This can start before the flag day.