Pure NT Development
Download
Report
Transcript Pure NT Development
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*
(tonyj,[email protected])
* 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 for cross-platform Graphics/GUI
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
Track Finding + Fitting
35
30
25
20
15
10
5
0
JDK1.1.8 -nojit
JDK1.1.8
MS 5.00.3177
IBM1.1.7
1.2
Seconds/Event
JDK1.1.8 -nojit
JDK1.1.8
MS 5.00.3177
IBM1.1.7
IBM1.1.8
JDK 1.2.1 Classic
JDK 1.2.1 HotSpot
40
Seconds/Event
Cluster Finding
1
0.8
0.6
IBM1.1.8
JDK 1.2.1 Classic
JDK 1.2.1 HotSpot
0.4
0.2
0
Virtual Machine
Virtual Machine
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
jCVS Client
jCVS Servlet
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
CVS vs. Sourcesafe
SourceSafe
CVS
Getting started
Install + Play
Read the manual
Integration into
Visual Studio
Cross platform
Remote Access
Yes
No
No
Not really
Yes
Yes
Laptop Friendly
Not really
Yes
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
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)