On Mon, Jun 11, 2007 at 02:28:15AM +0200, Tobias Oetiker wrote:
>Folks,
>
>if you are following rrdtool development ... here is some news:
>
>* replaced libart with cairo/pango this makes for more
> stable graphics output.
>
>* added grid snapping to all lines, the resulting graphs look much
> crisper (see attached examples).
>
>* pango markup is available in all text
> http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html
>
>* global tab stops. tabs on multiple lines are now aligned
> everywhere.
>
>WARNING:
>
>Do not use this for production. it is still under heavy
>development.
>
>WARNING II:
>
>At least on AMD64 there seem to be some issues with the new mmaping
>code. So configure with --disable-mmap for now.
Note that this should be fixed in r1105
>
> svn://svn.oetiker.ch/rrdtool/trunk/program
Tobi, please apply the following cosmetic hunks:
- NEWS mention the new file accessors
- rrd_update.c: remove unused some cruft
cheers,
Index: rrdtool-1.3/src/rrd_update.c
===================================================================
--- rrdtool-1.3/src/rrd_update.c (revision 1105)
+++ rrdtool-1.3/src/rrd_update.c (working copy)
@@ -325,6 +325,8 @@
if (rrd_file == NULL) {
goto err_free;
}
+ /* We are now at the beginning of the rra's */
+ rra_current = rra_start = rra_begin = rrd_file->header_len;
/* initialize time */
version = atoi(rrd.stat_head->version);
@@ -337,26 +339,6 @@
current_time_usec = 0;
}
- rra_current = rra_start = rra_begin = rrd_file->header_len;
- /* This is defined in the ANSI C standard, section 7.9.5.3:
-
- When a file is opened with udpate mode ('+' as the second
- or third character in the ... list of mode argument
- variables), both input and output may be performed on the
- associated stream. However, ... input may not be directly
- followed by output without an intervening call to a file
- positioning function, unless the input operation encounters
- end-of-file. */
-#if 0 //def HAVE_MMAP
- rrd_filesize = rrd_file->file_size;
- fseek(rrd_file->fd, 0, SEEK_END);
- rrd_filesize = ftell(rrd_file->fd);
- fseek(rrd_file->fd, rra_current, SEEK_SET);
-#else
-// fseek(rrd_file->fd, 0, SEEK_CUR);
-#endif
-
-
/* get exclusive lock to whole file.
* lock gets removed when we close the file.
*/
@@ -435,26 +417,6 @@
rrd_set_error("allocating pdp_new ...");
goto err_free_tmpl_idx;
}
-#if 0 //def HAVE_MMAP
- rrd_mmaped_file = mmap(0,
- rrd_file->file_len,
- PROT_READ | PROT_WRITE,
- MAP_SHARED, fileno(in_file), 0);
- if (rrd_mmaped_file == MAP_FAILED) {
- rrd_set_error("error mmapping file %s", filename);
- free(updvals);
- free(pdp_temp);
- free(tmpl_idx);
- rrd_free(&rrd);
- rrd_close(rrd_file);
- return (-1);
- }
-#ifdef USE_MADVISE
- /* when we use mmaping we tell the kernel the mmap equivalent
- of POSIX_FADV_RANDOM */
- madvise(rrd_mmaped_file, rrd_filesize, POSIX_MADV_RANDOM);
-#endif
-#endif
/* loop through the arguments. */
for (arg_i = 0; arg_i < argc; arg_i++) {
char *stepper = strdup(argv[arg_i]);
@@ -558,7 +520,6 @@
break;
}
-
/* seek to the beginning of the rra's */
if (rra_current != rra_begin) {
#ifndef HAVE_MMAP
@@ -1419,11 +1380,7 @@
free(rra_step_cnt);
rpnstack_free(&rpnstack);
-#if 0 //def HAVE_MMAP
- if (munmap(rrd_file->file_start, rrd_file->file_len) == -1) {
- rrd_set_error("error writing(unmapping) file: %s", filename);
- }
-#else
+#if 0
//rrd_flush(rrd_file); //XXX: really needed?
#endif
/* if we got here and if there is an error and if the file has not been
@@ -1442,6 +1399,8 @@
rrd_set_error("seek rrd for live header writeback");
goto err_free_pdp_new;
}
+ /* for mmap, we did already write to the underlying mapping, so we do
+ not need to write again. */
#ifndef HAVE_MMAP
if (version >= 3) {
if (rrd_write(rrd_file, rrd.live_head,
Index: rrdtool-1.3/NEWS
===================================================================
--- rrdtool-1.3/NEWS (revision 1105)
+++ rrdtool-1.3/NEWS (working copy)
@@ -2,6 +2,14 @@
============
Major Changes between 1.2.x and 1.3.x
+File access methods
+-------------------
+* introduced file-accessor functions rrd_read/rrd_seek/rrd_write
+* implemented full mmap-based file access with madvise hints for improved
+ scalability, much reduced memory-footprint and much less blocking on
+ disk
+* implemented optional full file-descriptor access instead of FILE* access
+
Graphing
--------
* libart has been replaced by cairo/pango
_______________________________________________
rrd-developers mailing list
[email protected]
https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers