230 likes | 657 Views
Code Development on NT Some notes on experience gained in developing cross-platform (NT/Unix) HEP software for the Linear Collider Detector More of a Random Walk than a Formal Overview of Development Tools. HEP-NT workshop SLAC - October 1999 Tony Johnson Tony Waite*
E N D
Code Development on NTSome notes on experience gained in developing cross-platform (NT/Unix) HEP software for the Linear Collider DetectorMore of a Random Walk than a Formal Overview of Development Tools HEP-NT workshop SLAC - October 1999 Tony Johnson Tony Waite* (tonyj,apw@slac.stanford.edu) * In absentia
NT Code Development • Topics • NT Code development tools for C++/Fortran/Java • Code development issues • Code management • SourceSafe • CVS • DEC - • Using NT as a data server • Conclusions
Windows NT Development Tools • For windows only development, tools are excellent: • Visual C++/J++ (MS Java)/Compaq Fortran • Excellent IDE allows development in all three languages • Integrated editor, cross-language debugger • Integrated build tool (make clone) • Incremental linker (that works) • Integrated code management (visual sourcesafe) • Object browser • SLAC has site license for MS developer tools
C++ for cross platform development • Cross Platform C++ development has many problems • Makefile for each platform • Need to build/debug on each platform • Versionitis • External dependencies • Compiler flags • Even egcs compiler has many system specific flags • Different methods for building DLL’s/C++ name mangling • Compiler bugs • Differing Levels of ANSI/STL Support • Architecture specific bugs • Found bugs in both Visual C++ (5.0) and egcs compiler for intel.
C++ for cross-platform development • Certainly possible - Simulation package does work on both NT and Unix. Large amount of time goes into testing/debugging on different platforms.
Java for Cross Platform Development • Have succeeded in writing entire reconstruction/analysis package in Java • Currently using Visual J++/Sourcesafe • All development currently being done on NT • JAR files built on NT and put on web server for download by others. • Java code can be run • Standalone from command prompt/batch job • Inside Java Analysis Studio (JAS)
Java Analysis Studio • Cross Platform Java GUI for data analysis
Java Experience • Write Once Run Anywhere • Really works (for applications, if not applets). • Develop on NT, runs without changes elsewhere • Developers have been able to learn language and tools and get up-to-speed fast • Performance - Adequate, getting better all the time • Need to abandon Visual J++, Source Safe
CVS for cross platform development • CVS is available for NT as well as Unix • NT tools include: • line mode tools • WinCVS • Rather confusing GUI • jCVS • Cross platform CVS GUI written in Java • Doesn’t support ssh access to remote repository? • Several tools available for web based access to code • CVSWeb - perl script • jCVS servlet - works well on NT
CVS security issues • Supports distributed access to code repository • bewildering array of access methods/security issues • rsh - no longer allowed at SLAC • pserver - • needs custom server, • passes weakly encrypted passwords over network • ssh • doesn’t work with all CVS clients • complex to set up client • no AFS token support
Is CVS sufficient for a physics collaboration? • If using Java - probably • If using C++, not really, • Need to be able to switch between configurations easily • Logical names where are you? • Location of external dependencies • Would like to use pre-built dll’s where possible. • Want to isolate users from system dependencies as far as possible. • Want to avoid “nightly builds” • Need to layer tool on top of CVS, make • LCD Solution: • Development Environment Controller (DEC)
Development Environment Controller • Written for LCD by Tony Waite, could be used by others • Hides details of file organization from user • User deals with subsystems, Gismo, Recon, etc. • Easy to switch between PROD,DEV,Test version of each subsystem • User Profiles allow saving/restoring environment. • Hides machine dependencies of BUILD operation • Automatically archives CVS version numbers for production BUILD’s
Oracle Paw Root Jazelle Flat File Objectivity Hippo Running a (Java) Data Server on NT Remote Data Desktop Client Network Data Server DIM • Use NT Service Manager to Run Data Server • Microsoft Java has built-in support for running as NT server • Application can be distributed as a single .exe which installs itself as an NT service • Other Java implementations can be run as an NT service with 3rd party add-ons (or roll your own). • Error logging using NT event log/viewer
NT Service - Pros and Cons • Pros • Auto start on reboot • Runs in background • Use service manager to start/stop service • Real life problems • Does not auto restart • Application can unexpectedly pop up dialog box! • Remote control difficult • Remote Server Manager only distributed with NT server (or with NT resource kit). • Requires port 137/138 access (blocked at SLAC firewall) or VPN/PPTP
Net Meeting for Remote Control • Netmeeting 3.0 has “Remote Desktop Feature” • If run on server allows remote access to server desktop from any NT/95/98 machine. • Free! • Security • Claims to use encrypted communication channel • Requires NT login to access remote desktop • Security dubious • Potentially very useful, perhaps worth considering
NT Disk Cache Problem • Problem with reading large datasets • NT will grow disk cache until it takes 99.5% of physical memory, regardless of who/what else requires memory. • Reading large datasets can result in NT totally grinding to a halt. • No system parameter to limit disk cache size • Workarounds • If you have access to call to C open statement you can turn off disk caching (big if) • Can run program which constantly flushes disk cache • Conclusion • NT not ready for primetime data server applications • Windows 2000 better?
Things I didn’t talk about • Because I don’t know anything about them • Sniff+ - Cross platform IDE • http://www.takefive.com/ • Cross platform GUI development with C++ • QT Widgets • http://www.troll.no/ • Libtool/configure • NT ports exist but not for non-experts • cygwin • Unix environment under NT
Conclusions • Tools for code development under NT only are great • Development tools probably better than Unix • Cross platform development • In C++ is a lot of extra work • Java can make things much easier, especially for: • GUI applications • Client/Server applications • NT for HEP batch/server side data processing • No obvious advantage over Unix/Linux • Tools and OS not as well suited to task as Unix • NT still maintains lead as desktop machine • Unix seems to be catching up fast (gnome, * office)