|
About ::
TODO ::
Blog ::
RSS ::
Old blog ::
Projects ::
GIT ::
Gallery ::
Notes
Wed, 18 Jun 2008(defmacro with-output-dir ((out pos dir flags) &body form)
`(let ((,pos 2))
(dolist (operation (nthcdr 2 *iozone-tests*))
(let* ((dir (pathname-as-directory dir))
(output-file (make-pathname
:directory (pathname-directory ,dir)
:name operation
:type "gnuplot")))
(with-open-file (,out output-file :direction :output :if-exists ,flags)
,@form))
(incf pos))))
(defun write-gnuplot-headers (dir)
(with-output-dir (out pos dir :supersede)
(format out "set title \"Iozone performance: ~a, KB/s\"~%" operation)
(format out "set terminal png small size 450 350~%")
(format out "set logscale x~%")
(format out "set xlabel \"Record size in KBytes\"~%")
(format out "set ylabel \"Kbytes/sec\"~%")
(format out "set output \"~a.png\"~%" (elt *iozone-tests* pos))
(format out "plot ")))
(defun update-gnuplot-headers (dir file)
(with-output-dir (out pos dir :append)
(unless *first-file-p*
(format out ", "))
(let* ((fstype (pathname-name file))
(name (make-output-name file)))
(format out "\"~a\" using 1:~d title \"~a\" with lines" name (1+ pos) fstype))))
Macros are really the coolest feature of the LISP. Now I believe I started to understand LISP kung-fu.Iozone parser is essentially ready. I was a bit pessimistic yesterday: it took only half of the day and several hours today, and code itself is rather ugly (and frequently really ugly, likely far from the LISP way), but it works: it runs over given dir, searches there for files with given extensions, parses them (removes unneded iozone information), writes result to specified directory. Also runs over iozone test strings and generate gnuplot scripts for them, which will build a graph based on filesystem info it gathered traversing the tree above, so results looks like this: $ ./parser.lisp Processing: /tmp/iozone/tmpfs/nfs.out ... done Processing: /tmp/iozone/tmpfs/pohmelfs.out ... done $ cat /tmp/iozone/tmpfs/out/read.gnuplot set title "Iozone performance: read, KB/s" set terminal png small size 450 350 set logscale x set xlabel "Record size in KBytes" set ylabel "Kbytes/sec" set output "read.png" plot "/tmp/iozone/tmpfs/nfs.out.data" using 1:5 title "nfs" with lines, "/tmp/iozone/tmpfs/pohmelfs.out.data" using 1:5 title "pohmelfs" with lines /devel/other :: Link / Comments (2) Zbr wrote at 2008-06-20 09:52:
Please solve this captcha to be allowed to post (need to reload in a minute): 85 - 19 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Miciah Dashiel Butler Masters wrote at 2008-06-20 09:38: