Re: 4.0.5 omniNames performance patch
Alex Tingle <[email protected]> Mon, 15 Aug 2005 11:20:38 +0100
| Newsgroups | gmane.comp.corba.omniorb.devel |
|---|---|
| Message-ID | <[email protected]> |
Jon, The omniNames log is NOT an error log. It's a persistency log. Every time the state of the omniNames database changes, the change is appended to the log. Obviously it's written synchronously so that the change is flushed to disk rather than stored in RAM where it might be destroyed by a system failure. I would expect that the log would never be changed when you are reading data from omniNames, so in normal use there would be no performance penalty. What are you doing to see a performance problem? -Alex -- Dammit Jim, I'm a programmer... not a mind reader! On 3 Aug 2005, at 22:06, Jonathan Biggar wrote: > We discovered that omniNames caused *very* bad performance on a > hardware RAID5 array if the omniNames error log was stored on the > array. This was because it was opening its error log using O_SYNC and > unbuffered, which tells the kernel to synchronously flush to the disk > *each* character written to the log. > > I've attached a patch to 4.0.5 that fixes this problem. (I don't see > any safety reason why the omniNames error log needs to use O_SYNC or > be unbuffered anyway...) > > -- > Jon Biggar > Levanta > [email protected] > > --- omniORB-4.0.5/src/appl/omniNames/omniNames.cc.orig 2003-05-09 > 06:32:59.000000000 -0700 > +++ omniORB-4.0.5/src/appl/omniNames/omniNames.cc 2005-07-01 > 14:16:53.000000000 -0700 > @@ -150,12 +150,13 @@ > int fd = _open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, > _S_IWRITE); > if (fd < 0 || _dup2(fd,2)) { > #else > - int fd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC | O_SYNC, > 0666); > + int fd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0666); > if (fd < 0 || dup2(fd,2) < 0) { > #endif > cerr << "Cannot open error log file: " << argv[2] << endl; > usage(); > } > + setlinebuf(stderr); > removeArgs(argc, argv, 1, 2); > } > else if ((strncmp(argv[1], "-ORB", 4) != 0)) { > _______________________________________________ > omniORB-dev mailing list > [email protected] > http://www.omniorb-support.com/mailman/listinfo/omniorb-dev