{"id":4411,"date":"2012-07-19T14:41:54","date_gmt":"2012-07-19T13:41:54","guid":{"rendered":"http:\/\/www.walkingrandomly.com\/?p=4411"},"modified":"2017-01-08T20:03:57","modified_gmt":"2017-01-08T19:03:57","slug":"lint-in-condor-submission-scripts","status":"publish","type":"post","link":"https:\/\/walkingrandomly.com\/?p=4411","title":{"rendered":"Linting Condor Submission Scripts"},"content":{"rendered":"<p>This is a guest post by colleague and friend, Ian Cottam of <a href=\"http:\/\/www.manchester.ac.uk\/\">The University of Manchester<\/a>.<\/p>\n<p>I recently implemented a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Lint_(software)\">lint<\/a> program for <a href=\"http:\/\/research.cs.wisc.edu\/condor\/\">Condor<\/a> (unsurprisingly called: condor_lint), analogous to the famous one for C of days of yore. That is, it points out the fluff in a Condor script and suggests improvements. It is based on our local knowledge of how our Condor Pool is set up, here in Manchester, and also reflects recent changes to Condor.<\/p>\n<p>Why I did it is interesting and may have wider applicability. Everything it reports is already written up on our extensive internal web site which users rarely read. I suspect the usual modus operandi of our users is to find, or be given, a Condor script, relevant to their domain, and make the minimum modifications to it that means it &#8216;works&#8217;. Subsequently, its basic structure is never updated (apart from referencing new data files, etc).<\/p>\n<p>To be fair, that&#8217;s what we all do &#8212; is it not?<\/p>\n<p>Ignoring our continually updated documentation means that a user&#8217;s job may make poor use of the Condor Pool, affecting others, and costing real money (in wasted energy) through such &#8220;bad throughput&#8221;.<\/p>\n<p>Now, although we always run the user&#8217;s job if Condor&#8217;s basic condor_submit command accepts it, we first automatically run condor_lint. This directly tells them any &#8220;bad news&#8221; and also, in many cases, gives them the link to the specific web page that explains the issue in detail.<\/p>\n<p>Clearly, even such &#8220;in your face&#8221; advice can still be ignored, but we are starting to see improvements.<\/p>\n<p>Obviously such an approach is not limited to Condor, and we would be interested in hearing of &#8220;lint approaches&#8221; with other systems.<\/p>\n<p><strong>Links<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/www.dropbox.com\/s\/qcc7hjkodvplo9f\/condor_lint?dl=1\">condor_lint<\/a><\/li>\n<li><a href=\"https:\/\/www.dropbox.com\/s\/n30r44wbeodefyy\/bashed?dl=1\">bashed &#8211; a helper script<\/a><\/li>\n<\/ul>\n<p><strong>Other WalkingRandomly posts by Ian Cottam<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/www.walkingrandomly.com\/?p=4284\">Experience and Good Taste in Software\/Systems Design<\/a><\/li>\n<li><a href=\"https:\/\/www.walkingrandomly.com\/?p=3396\">Natural Scientists: their very big output files \u2013 and a tale of diffs<\/a><\/li>\n<li><a href=\"https:\/\/www.walkingrandomly.com\/?p=3339\">The Evolution of \u201cDropAndCompute\u201d \u2013 easing the pain of accessing High Throughput Computing (and similar) facilities<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This is a guest post by colleague and friend, Ian Cottam of The University of Manchester. I recently implemented a lint program for Condor (unsurprisingly called: condor_lint), analogous to the famous one for C of days of yore. That is, it points out the fluff in a Condor script and suggests improvements. It is based [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[48,49,7],"tags":[],"class_list":["post-4411","post","type-post","status-publish","format-standard","hentry","category-condor","category-guest-posts","category-programming"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3swhs-199","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/4411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4411"}],"version-history":[{"count":6,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/4411\/revisions"}],"predecessor-version":[{"id":6273,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/4411\/revisions\/6273"}],"wp:attachment":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}