Roadmaps

From Filebench
Revision as of 21:49, 3 March 2014 by Vass-vass (Talk | contribs)

Jump to: navigation, search

Filebench 1.5

Big changes: - Import of a file system tree - Custom variables - Non-interactive runs

Others are reductions only! - Grammer clean-up - Clean-up & reductions - Performance improvements

Filebench Future

- Testing platform

Various

To discuss with George

- Separate commit for every logical (even small) change

- Kernel coding conventions. E.g., (avd == NULL) => !avd

int function()

commits should pass checkpatch.pl

- No code that is not used by anything. Should be used by at least something.

- configure.ac Makefile.am changes cause changes in configure/Makefile and others. Use CentOS 6.4 with specific autotools versions. Have a git-verify hook for this?

- No new grammar rules, only reductions in release 1.5. I would really like to avoid addition to grammar at this stage. I'm fine with import functionality though.

- mmap functionality

- Versioning 1.5 or 1.5.0?... Workload files versions

- I'm not a big fan of large comments. Code should explain itself. But, where necessary, the comments should present.

- Testing on varilous platforms: set of tests - both perfomance and

 functionality. Different systems. May be on ramdisk?... With many threads?

- Replace random variables by custom variables?


Specifics:

- change in avd_get_int - shouldn't that change avd_get_* every - I don't like randvar printing reintroduction (.seed, .gamma, .type) - Path changes: what if user specifies same directory?... - I like *.fb extension


Plan

- There are many useful changes from George. I don't want to change code until he has sent all of the in a proper way.

- Then the plan can be that: 1) George sends all small scattered patches to me in the coming weeks. We do ping-pong 2) I meanwhile work only on the wiki & testing

- When we're done with the bul of Gerge's small patches - we do regular procedure, but my freeze is over.

- For now I think sending patches is the best option. Git push-pull seems to be not easy at this point.

Other things to fix

- Raw device functionality is broken

- Remove boolean_t - tabular distribution, percents as long

- filesizegamma parameter is not needed as we have custom/random variables with

 gamma distribution.

- Move shm_threadflow_lock to the procflow structure where it belongs to.

- make compilation independent from parser_gram.y (so that when we touch it...)

- USAGE2 macros redefine

- add posset align attribute

- FINISH IOPRIO in a better way.

- fix compilation on SUN compilers (reported by Drew Schatt)

- fix multiple run invocations and part-by-part Filebench executione (create-filset, create-proce, stat_snap, etc.) (reported by Drew Schatt)

- Testing system on calvin: VMs with different OSes.

- random file reading with seed, not /dev/urandom (Rick req.)

- fix multiple run invocations and part-by-part Filebench executione (create-filset, create-proce, stat_snap, etc.) (Drew Schatt req.)

- Testing system: VMs with different OSes.

- On Solaris we get bzero() implicit declaration!

- On FreeBSD a lot of mutex attributes are not supported: 46604: 0.001: cannot set mutex attr PROCESS_SHARED on this platform on line 1 46604: 0.002: cannot set mutex attr PROCESS_SHARED on this platform on line 1 46604: 0.002: cannot set mutex attr PROCESS_SHARED on this platform on line 1 46604: 0.002: cannot set mutex attr PROCESS_SHARED on this platform on line 1 The main problem iS SHARED, that means if we have multiple porcesses (not threads) we'll have issues. So, check it and fix if possible.

- usec/cpu-op is incorrect for oltp workload. OLTP in general works

   weird. Figure it out, do it only after process model is enabled.

- Check what happens if pthreads (and others, like lm) are not available

- Then do validation of thread vs process model (NFS Webproxy was different(?), e.g.)

- Look more carefully through Solaris-specific functions and data structures

- -D_REENTRANT, do we need it?

- FreeBSD, analog for /proc/stat or libkstat and /proc/<pid>/stat?

- leafdirs attributes for filesets does not work correctly: entry names

 for files collide with entry names for leafdirs.

- Ifdefs for all header files

- print all defines, sizeofs, functions used, or something like that

- reenable fscheck command later

- reenable multi_client_sync.c later

- Filebench does not support aio_read?

- HAVE_CFTIME -> HAVE_STRFTIME

- Auto-completio db is outdated

- Enforce configuration option:

       #ifdef HAVE_
               ....
       #elif HAVE_
       #else
               ERROR
       #fi
       but not just if else that can easily fail.

- eemove config.h on make distclean

- modify filebench so that it supports reuse properly (even for writes)

 (then we can use dd of pre-stored  images - but how to store them?...)

- Sometimes on white we hang right after thread creation: 927: 7.180: Starting 100 filereaderthread threads wchan shows: futex_wait_queue_meroot()

- add fb_ prefix to all function in order not to pollute namespace

- rename files properly

- Use __function__ constant.

- move random generation from posset.c to fb_random.c

- make a policy about abd_t usage.

Meeting with George on 03/03

  • Added George's Sourceforge account to Filebench developer's list
  • Agreed with George on most of the things discussed
    • grammer and functionality reductions to stabilize FB
    • commit per single logical change (even a small one)
    • kernel coding style
    • use autoconf-2.63-5.1.el6.noarch and automake-1.11.1-4.el6.noarch from CentOS 6.3
    • add custom variables along with random variables to Filebench-1.5
    • add import functionality from George to Filebench-1.5
    • ensure non-interactive runs in Filebench-1.5
    • remove all of the "expression evaluation"-like, except one case which keep temorarly: path=$dir/path in filesets. Later work on proper fileset evaluation.
  • Think more on grammar from functionality split. Grammer parsing should be separate and responsible for grammar validation mainly. The rest should be separate.
  • See incompatible will be the old workload files with new Filebench
  • Add performance improvements: collect less statistics by default
  • To decide later
    • Filebench and workload profiles versioning
    • Expression evaluation
    • MMAP_FIXED
    • Expression evaluation
    • Proper raw devices support
    • Remove boolean_t
    • More clear grammar vs. functionality separation