1 / 19

MDSim - Load Simulator

MDSim - Load Simulator. Alexey Lyashkov <Alexey_Lyashkov@xyratex.com>. Agenda. Project ideas Conceptual design Userland application structure Kernel module structure MD extension Data extension. Project ideas.

zelia
Download Presentation

MDSim - Load Simulator

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MDSim - Load Simulator Alexey Lyashkov <Alexey_Lyashkov@xyratex.com>

  2. Agenda • Project ideas • Conceptual design • Userland application structure • Kernel module structure • MD extension • Data extension

  3. Project ideas Testing various FS aspects we frequently find it difficult for applications to provide a replicable workload. To solve this we need a tool to generate a more direct load. Advantages of project • Flexible • Extensible

  4. Conceptual design LoadSim Kernel part Userland part Virtual Machine parser Kernel API Bytecode generator Metadata API Visualization results DataAPI

  5. Userland application structure MDSIM “Compiler” (convert parsing result into assembler code” and resolve labels) Encode assembler code into binary form Kernel Interface lexical scanner Bison based parser

  6. Kernel module structure Client Environment VM extensions sys extension Metadata extension Data extension Data related commands (like data IO, striping.. etc) OS interface (like delay, race emulation, change effective UID, GID) Metadata related commands (like make dir, file.. etc)

  7. Virtual machines Virtual machines Like real CPU Polish notation, Forth like Register machine Stack machine Memory Memory access unit Data Stack Registers Return stack Program code, data

  8. Kernel module: environment Application specific data Like files, states MD Environment Client Environment Data Environment Statistic

  9. VM Extensions Extensions Planed system Metadata Data IO Local Local OS api lustre ost_echo osc_echo MDD

  10. MD extensions MD (metadata) extensions – plugin API to enable simulator use with different filesystem types via native functions. Plugins are responsible for executing any metadata modification operations atomically. MD extensions Responsible to use local mount Local lustre Each client have own lustre mount MDD Direct connect to MDD to avoid network and ldlm overhead

  11. MD Program example procedure test1 make_work_dir 0777 cd "test1" expected FAIL mkdir "test1" 0666 expected OK cd "test1" expected OK open "test-file1" O_CREAT|O_RDWR 0666 20 expected OK close 20 expected OK stat "test-file1" expected OK chmod "test-file1" 0666 expected OK chtime "test-file1" 222 expected OK chown "test-file1" 999:999 expected OK truncate "test-file1" 2000 expected OK softlink "test-file1" "soft-1" expected OK hardlink "test-file1" "hard-1" expected OK readlink "soft-1" expected OK rename "hard-1" "hard-2" expected OK endproc server MDS0 192.168.69.3@tcp "lustre” client "CLI[0-800]" test1

  12. MD Program example 2 procedure test1 $R1 = 5 while ($R1 != 0) $R0 = printf "file-%s-%d-%d" [ $$cli_name, $R1, $$pid ] open $R0 O_CREAT|O_RDWR 0666 20 expected OK close 20 expected OK $R1 = $R1 - 1 endw endproc server local "/mnt/tmp" client "CLI0" test1 That example creates a 5 files with names ‘file-CLI0-[5 .. 0]-$process_pid

  13. MD Results example cli CLI0_0 : last op 279 total 279 rc -2 VM_MD_CALL_CD : 999/53997/27498 VM_MD_CALL_MKDIR : 2999/2999/2999 VM_MD_CALL_READDIR : 1000000000/0/0 VM_MD_CALL_UNLINK : 1000000000/0/0 VM_MD_CALL_OPEN : 999/999/999 VM_MD_CALL_CLOSE : 1000000000/0/0 VM_MD_CALL_STAT : 1000000000/0/0 VM_MD_CALL_CHMOD : 1000000000/0/0 VM_MD_CALL_CHOWN : 1000000000/0/0 VM_MD_CALL_CHTIME : 1000000000/0/0 VM_MD_CALL_TRUNCATE : 1000000000/0/0 VM_MD_CALL_SOFTLINK : 1000000000/0/0 VM_MD_CALL_HARDLINK : 1000000000/0/0 VM_MD_CALL_READLINK : 1000000000/0/0 VM_MD_CALL_RENAME : 1000000000/0/0 Client executed all op’s (total == last) last operation result -2 (ENOENT) Time of executing for each supported operation (min, avg, max)

  14. Data extensions Layouts Local Layouts Data ost_echo IO osc_echo

  15. Layouts Layout module designed for testing different QoS disciplines and controls low level data object allocations and striping parameters. QoS discipline Layout Raid parameters

  16. data access extensions Responsible Object allocation Read/Write IO

  17. DATA program example targets OSC1 .... OSC2 .... endtarget layouts layout 1 { LOV_RAID0, stripe size, ... } layout 2 { PDCLUST, start target, ... } endlayout objects object 1 layout1 endobj procedure test1 create 1 seek 1 YYYYY write 1 size YYYYY seek 1 0 read 1 EOF destroy1 endproc client ... test1 client ... test2

  18. Conclusions MDSim useful for testing because: • May simulate many clients on single host • Has flexible language to describe any type of workload • Has plugin API to create connectors to any FS • May be possible to create a tool to convert a Lustre log to test program

  19. Final Thanks! Alexey Lyashkov <Alexey_Lyashkov@xyratex.com>

More Related