From sergey.gordok at gmail.com Mon Dec 5 13:32:02 2011 From: sergey.gordok at gmail.com (Sergey Gordok) Date: Mon, 5 Dec 2011 19:32:02 +0100 Subject: [Disksim-users] Look for x64 capable DiskSim version Message-ID: Hi all, my name is Sergey Gordok and I'm a student (M.Sc.) in the Technical University Darmstadt (Germany). Right now working with the research group on new algorithms for Database Management Systems on SSDs (Flash disks). I would like to use DiskSim to perform tests (e.g. new algorithms for FTL layer of SSD). I have not yet installed the software, but have found on some forums that some versions (e.g. v.1.0, 3.0) are not capable for x64 hardware). Is the last version on the official site (i.e. v4.0) 64-bit capable (hardware or software). I'm working on x64 processor Inter Core i3 2.13 GHz*2. OS right now is - ubuntu 11 x64. (but this is not a problem to install x86 ubuntu) I have also found in the paper "The Structural Simulation Toolkit" that "... First, we modified DiskSim to be 64-bit compliant to support current hard-ware architectures. After significant testing and validation,we submitted these changes back to the original developersfor general distribution." If the version v4.0 is not x64-hardware capable, have you such? Can you give it to me? Thanks a lot! Best, Sergey From pmacko at eecs.harvard.edu Mon Dec 5 13:41:14 2011 From: pmacko at eecs.harvard.edu (Peter Macko) Date: Mon, 05 Dec 2011 13:41:14 -0500 Subject: [Disksim-users] Look for x64 capable DiskSim version In-Reply-To: References: Message-ID: <4EDD104A.20603@eecs.harvard.edu> Hi, The following patch did the trick for me: http://scobyseo.blogspot.com/2009/12/disksim-40-ssd-extention-64bit-patch.html The only inconvenience is that the patch did not apply cleanly, but it worked when I applied it manually. Hope this helps, -Peter On 12/05/2011 01:32 PM, Sergey Gordok wrote: > Hi all, > > my name is Sergey Gordok and I'm a student (M.Sc.) in the Technical > University Darmstadt (Germany). > > Right now working with the research group on new algorithms for > Database Management Systems on SSDs (Flash disks). > I would like to use DiskSim to perform tests (e.g. new > algorithms for FTL layer of SSD). > I have not yet installed the software, but have found on some forums > that some versions (e.g. v.1.0, 3.0) are not capable for x64 > hardware). > Is the last version on the official site (i.e. v4.0) 64-bit capable (hardware > or software). > > I'm working on x64 processor Inter Core i3 2.13 GHz*2. > OS right now is - ubuntu 11 x64. (but this is not a problem to > install x86 ubuntu) > > I have also found in the paper "The Structural Simulation Toolkit" that > "... First, we modified DiskSim to be 64-bit compliant to support > current hard-ware architectures. > After significant testing and validation,we submitted these changes > back to the original developersfor general distribution." > > If the version v4.0 is not x64-hardware capable, have you such? Can > you give it to me? > > Thanks a lot! > > Best, > Sergey > _______________________________________________ > Disksim-users mailing list > Disksim-users at ece.cmu.edu > https://sos.ece.cmu.edu/mailman/listinfo/disksim-users From sergey.gordok at gmail.com Mon Dec 5 15:37:20 2011 From: sergey.gordok at gmail.com (Sergey Gordok) Date: Mon, 5 Dec 2011 21:37:20 +0100 Subject: [Disksim-users] DiskSim 4.0 Compile Message-ID: Hi all, thanks for the replies on the patch for the x64. Have one more question: will the DiskSim 4.0 compile under ubuntu 11 (gcc, g++ 4.6) or should I compile under gcc 3.3.6? Is there somewhere instructions about this? Thanks Best, Sergey From haghdoost at gmail.com Mon Dec 5 15:48:39 2011 From: haghdoost at gmail.com (Alireza Haghdoost) Date: Mon, 5 Dec 2011 14:48:39 -0600 Subject: [Disksim-users] DiskSim 4.0 Compile In-Reply-To: References: Message-ID: Yes , I do compile it with gcc 4.6. Post your log if you face to any problem. Alireza On Dec 5, 2011 2:37 PM, "Sergey Gordok" wrote: > Hi all, > > thanks for the replies on the patch for the x64. > > Have one more question: > > will the DiskSim 4.0 compile under ubuntu 11 (gcc, g++ 4.6) or should > I compile under gcc 3.3.6? > > Is there somewhere instructions about this? > > Thanks > > Best, > Sergey > _______________________________________________ > Disksim-users mailing list > Disksim-users at ece.cmu.edu > https://sos.ece.cmu.edu/mailman/listinfo/disksim-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kollapurushotham at gmail.com Mon Dec 5 22:58:27 2011 From: kollapurushotham at gmail.com (kolla purushotham) Date: Mon, 5 Dec 2011 18:58:27 -0900 Subject: [Disksim-users] System Level Simulation Message-ID: Hi, I am doing a simulation using disksim as a blackbox (using Disksim in system level simulation as suggested in page 44 of the manual). Here is the situation: I am using the same trace and .parv files to do an interface simulation and an internal simulation. Both of them are giving different results. When I observed the output event files I found that the event sequence is a lot different in both the scenarios and I have no idea why it is happening so. My doubt is can this happen, given that I am using the same input? Any help will be greatly appreciated. -- Regards, Purushotham -------------- next part -------------- An HTML attachment was scrubbed... URL: From sergey.gordok at gmail.com Tue Dec 6 09:11:48 2011 From: sergey.gordok at gmail.com (Sergey Gordok) Date: Tue, 6 Dec 2011 15:11:48 +0100 Subject: [Disksim-users] Compile error Message-ID: Hi all, I'm trying to compile the DiskSim 4.0 and have the following error: "...memsmodel/mems_piecewise_seek.c:524: undefined reference to `sqrt'" and so on... (see the log file) It seems to be a problem with the mathlib link, however I've check in the makefile, and there is all ok (i.g. gcc -lm ...). I'm actually not very familar with C/C++ and linux systems, so I'm in trouble :) Can anyone help me? My system is: ubuntu 11.10 x64 DiskSim 4.0. (with x64 patch) gcc, g++ 4.6 flex, bison 2.5 IDE Anjuta Thanks a lot! Best Sergey -------------- next part -------------- timbuktu at ubuntu:~/disksim_orig/disksim-4.0$ make make -C libddbg make[1]: Entering directory `/home/timbuktu/disksim_orig/disksim-4.0/libddbg' mkdir -p include/libddbg lib cp -p libddbg.h include/libddbg cp -p libddbg.a lib make[1]: Leaving directory `/home/timbuktu/disksim_orig/disksim-4.0/libddbg' make -C libparam make[1]: Entering directory `/home/timbuktu/disksim_orig/disksim-4.0/libparam' mkdir -p lib include/libparam cp -p libparam.a lib cp -p bitvector.h libparam.h include/libparam make[1]: Leaving directory `/home/timbuktu/disksim_orig/disksim-4.0/libparam' make -C diskmodel make[1]: Entering directory `/home/timbuktu/disksim_orig/disksim-4.0/diskmodel' make -C tests make[2]: Entering directory `/home/timbuktu/disksim_orig/disksim-4.0/diskmodel/tests' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/timbuktu/disksim_orig/disksim-4.0/diskmodel/tests' make[1]: Leaving directory `/home/timbuktu/disksim_orig/disksim-4.0/diskmodel' make -C memsmodel make[1]: Entering directory `/home/timbuktu/disksim_orig/disksim-4.0/memsmodel' gcc -Wall -Wno-unused -MD -o mems_seektest mems_seektest.o -lm -L. -g -DASSERTS -I../src// -I../ -I../src//src -lmems_internals ./libmems_internals.a(mems_piecewise_seek.o): In function `find_seek_time_piecewise': /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_piecewise_seek.c:523: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_piecewise_seek.c:565: undefined reference to `sqrt' ./libmems_internals.a(mems_hong_seek.o): In function `find_seek_time_hong_x': /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:78: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:80: undefined reference to `acos' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:94: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:96: undefined reference to `acos' ./libmems_internals.a(mems_hong_seek.o): In function `find_seek_time_hong_y': /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:174: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:182: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:182: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:179: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:176: undefined reference to `asin' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:194: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:202: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:202: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:199: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:196: undefined reference to `asin' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:214: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:222: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:222: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:219: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:216: undefined reference to `asin' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:265: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:273: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:273: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:270: undefined reference to `sqrt' /home/timbuktu/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:267: undefined reference to `asin' collect2: ld returned 1 exit status make[1]: *** [mems_seektest] Error 1 make[1]: Leaving directory `/home/timbuktu/disksim_orig/disksim-4.0/memsmodel' make: *** [all] Error 2 -------------- next part -------------- A non-text attachment was scrubbed... Name: Makefile Type: application/octet-stream Size: 3749 bytes Desc: not available URL: From haghdoost at gmail.com Tue Dec 6 11:14:13 2011 From: haghdoost at gmail.com (Alireza Haghdoost) Date: Tue, 6 Dec 2011 10:14:13 -0600 Subject: [Disksim-users] Compile error In-Reply-To: References: Message-ID: update your makefile with the following lines: mems_seektest: mems_seektest.o libmems_internals.a $(CC) -o $@ mems_seektest.o $(CFLAGS) -lmems_internals $(LDFLAGS) 2011/12/6 Sergey Gordok > Hi all, > > I'm trying to compile the DiskSim 4.0 and have the following error: > > "...memsmodel/mems_piecewise_seek.c:524: undefined reference to `sqrt'" > > and so on... (see the log file) > > It seems to be a problem with the mathlib link, however I've check in > the makefile, and there is all ok (i.g. gcc -lm ...). > > I'm actually not very familar with C/C++ and linux systems, so I'm in > trouble :) > > Can anyone help me? > > My system is: > > ubuntu 11.10 x64 > DiskSim 4.0. (with x64 patch) > gcc, g++ 4.6 > flex, bison 2.5 > IDE Anjuta > > > Thanks a lot! > > Best > Sergey > > _______________________________________________ > Disksim-users mailing list > Disksim-users at ece.cmu.edu > https://sos.ece.cmu.edu/mailman/listinfo/disksim-users > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From sergey.gordok at gmail.com Tue Dec 6 12:10:23 2011 From: sergey.gordok at gmail.com (Sergey Gordok) Date: Tue, 6 Dec 2011 18:10:23 +0100 Subject: [Disksim-users] Compile error In-Reply-To: References: Message-ID: Hi, thanks for reply. Unfortunately the update doesn't help. Have you another idea? :) Best, Serge 2011/12/6 Alireza Haghdoost : > update your makefile with the following lines: > > mems_seektest: mems_seektest.o libmems_internals.a > ? ? ? ? $(CC) -o $@ mems_seektest.o ?$(CFLAGS) -lmems_internals $(LDFLAGS) > > > 2011/12/6 Sergey Gordok >> >> Hi all, >> >> I'm trying to compile the DiskSim 4.0 and have the following error: >> >> "...memsmodel/mems_piecewise_seek.c:524: undefined reference to `sqrt'" >> >> and so on... (see the log file) >> >> It seems to be a problem with the mathlib link, however I've check in >> the makefile, and there is all ok (i.g. gcc -lm ...). >> >> I'm actually not very familar with C/C++ and linux systems, so I'm in >> trouble :) >> >> Can anyone help me? >> >> My system is: >> >> ubuntu 11.10 x64 >> DiskSim 4.0. (with x64 patch) >> gcc, g++ 4.6 >> flex, bison 2.5 >> IDE Anjuta >> >> >> Thanks a lot! >> >> Best >> Sergey >> >> _______________________________________________ >> Disksim-users mailing list >> Disksim-users at ece.cmu.edu >> https://sos.ece.cmu.edu/mailman/listinfo/disksim-users >> > -------------- next part -------------- timbuktu at ubuntu:~/DiskSim/disksim_orig/disksim-4.0$ make make -C libddbg make[1]: Entering directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/libddbg' mkdir -p include/libddbg lib cp -p libddbg.h include/libddbg cp -p libddbg.a lib make[1]: Leaving directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/libddbg' make -C libparam make[1]: Entering directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/libparam' mkdir -p lib include/libparam cp -p libparam.a lib cp -p bitvector.h libparam.h include/libparam make[1]: Leaving directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/libparam' make -C diskmodel make[1]: Entering directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/diskmodel' make -C tests make[2]: Entering directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/diskmodel/tests' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/diskmodel/tests' make[1]: Leaving directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/diskmodel' make -C memsmodel make[1]: Entering directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel' make -C src make[1]: Entering directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/src' gcc -Wall -Wno-unused -MD -I. -I../diskmodel/include -I../libparam/include -I../libddbg/include -g -DASSERTS -I../memsmodel/include -D_INLINE -o disksim disksim_main.o -lm -L. -ldisksim -L../diskmodel/lib -ldiskmodel -L../memsmodel/lib -lmemsmodel -L../libparam/lib -lparam -L../libddbg/lib -lddbg ./libdisksim.a(disksim_synthio.o): In function `synthio_get_normal': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/src/disksim_synthio.c:124: undefined reference to `log' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/src/disksim_synthio.c:125: undefined reference to `log' ./libdisksim.a(disksim_synthio.o): In function `synthio_get_exponential': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/src/disksim_synthio.c:139: undefined reference to `log' ./libdisksim.a(disksim_synthio.o): In function `synthio_get_poisson': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/src/disksim_synthio.c:150: undefined reference to `exp' ./libdisksim.a(disksim_synthio.o): In function `synthio_read_normal': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/src/disksim_synthio.c:527: undefined reference to `sqrt' ./libdisksim.a(disksim_stat.o): In function `stat_print_file': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/src/disksim_stat.c:258: undefined reference to `sqrt' ./libdisksim.a(disksim_stat.o): In function `stat_print_set': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/src/disksim_stat.c:326: undefined reference to `sqrt' ../memsmodel/lib/libmemsmodel.a(mems_disksim.o): In function `mems_get_distance': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_disksim.c:298: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_disksim.c:310: undefined reference to `sqrt' ../memsmodel/lib/libmemsmodel.a(mems_event.o): In function `mems_device_overhead_complete': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_event.c:809: undefined reference to `fmod' ../memsmodel/lib/libmemsmodel.a(mems_piecewise_seek.o): In function `find_seek_time_piecewise': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_piecewise_seek.c:523: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_piecewise_seek.c:565: undefined reference to `sqrt' ../memsmodel/lib/libmemsmodel.a(mems_hong_seek.o): In function `find_seek_time_hong_x': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:78: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:80: undefined reference to `acos' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:94: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:96: undefined reference to `acos' ../memsmodel/lib/libmemsmodel.a(mems_hong_seek.o): In function `find_seek_time_hong_y': /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:174: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:182: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:182: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:179: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:176: undefined reference to `asin' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:194: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:202: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:202: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:199: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:196: undefined reference to `asin' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:214: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:222: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:222: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:219: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:216: undefined reference to `asin' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:265: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:273: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:273: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:270: undefined reference to `sqrt' /home/timbuktu/DiskSim/disksim_orig/disksim-4.0/memsmodel/mems_hong_seek.c:267: undefined reference to `asin' collect2: ld returned 1 exit status make[1]: *** [disksim] Error 1 make[1]: Leaving directory `/home/timbuktu/DiskSim/disksim_orig/disksim-4.0/src' make: *** [all] Error 2 From ricardoreyyy at gmail.com Fri Dec 9 15:59:07 2011 From: ricardoreyyy at gmail.com (Ricardo Rey) Date: Fri, 9 Dec 2011 14:59:07 -0600 Subject: [Disksim-users] Using Disksim Message-ID: Hi, all! I am new to DiskSim, and I have not fully understood how to use it yet. Basically, I need to make a C program which will call DiskSim. As far as I understand things, in the parameter file I can "build" the topology of my system, I can specify which disks I'm going to be using, the type of disk, etc. What I don't understand is how to tell the simulator what to do. Let's say I want to simulate the writing of a 100MB file... how can I pass such a request? Should it be in the tracefile, or would it be "synthetically generated? What would the "tracetype" be? As you can see, I'm really lost here, and the PDF from the CMU web page is more of a reference than a manual. So... can someone help me out with this? Or maybe someone knows where I can find an actual tutorial/manual on how to use DiskSim? Greetings! Rick -------------- next part -------------- An HTML attachment was scrubbed... URL: From pmacko at eecs.harvard.edu Sat Dec 10 01:17:54 2011 From: pmacko at eecs.harvard.edu (Peter Macko) Date: Sat, 10 Dec 2011 01:17:54 -0500 Subject: [Disksim-users] Using Disksim In-Reply-To: References: Message-ID: Hi, There is a very simple, yet complete, example that is directly distributed as a part of the DiskSim source code - it's src/syssim_driver.c. It shows you how you can run DiskSim from your C code and pass to it your own requests one I/O request at the time. In short, you need to specify a .parv file (such as any one of those in the valid/ directory) and an output file when you initialize DiskSim using disksim_interface_initialize(), and then you can submit your own I/O requests using disksim_interface_request_arrive() as shown in the example. The only catch is that you would need to make additional calls to disksim_interface_internal_event(), but that's all shown in the example. To run the example, just compile DiskSim as usual, and then you can run something like "src/syssim valid/hp_c2490a.parv output.txt 10000" from the disksim/ directory. I hope this helps. Best, -Peter On Dec 9, 2011, at 3:59 PM, Ricardo Rey wrote: > Hi, all! > > I am new to DiskSim, and I have not fully understood how to use it yet. > > Basically, I need to make a C program which will call DiskSim. > > As far as I understand things, in the parameter file I can "build" the topology of my system, I can specify which disks I'm going to be using, the type of disk, etc. > > What I don't understand is how to tell the simulator what to do. Let's say I want to simulate the writing of a 100MB file... how can I pass such a request? > Should it be in the tracefile, or would it be "synthetically generated? What would the "tracetype" be? > > As you can see, I'm really lost here, and the PDF from the CMU web page is more of a reference than a manual. > > So... can someone help me out with this? Or maybe someone knows where I can find an actual tutorial/manual on how to use DiskSim? > > Greetings! > > Rick > _______________________________________________ > Disksim-users mailing list > Disksim-users at ece.cmu.edu > https://sos.ece.cmu.edu/mailman/listinfo/disksim-users From vahldiek at mpi-sws.org Sat Dec 10 07:05:44 2011 From: vahldiek at mpi-sws.org (vahldiek at mpi-sws.org) Date: Sat, 10 Dec 2011 13:05:44 +0100 Subject: [Disksim-users] System Level Simulation In-Reply-To: References: Message-ID: <5ce977e4a056681b9ce9b215761c59ac.squirrel@mail.mpi-sws.org> Hi, I have seen the behavior before and studied the execution of the syssim. you will see differences at the level of the disksim_diskctlr. These differences come from an issue within the current syssim implementation in which the following happens: 1) a request is inserted into disksim 2) the request is handled 3) the method to report completion is called Until now everything seems fine, if the next request would immediately start after the request completion method is called. Unfortunately this is not the case, the syssim stays within the loop processing disksim events. /* Process events until this I/O is completed */ while(next_event >= 0) { now = next_event; next_event = -1; disksim_interface_internal_event(disksim, now, 0); } Why is this the case? The request is fully processed so there shouldn't be any events within the system, right? Disksim adds an event automatically after every request to continue reading after the request is over. This is done at the disksim_diskctlr level and continues until the segment storing the request is full. For me this meant a difference in completion time and next starting time of around 0.5ms. To address the issue I think I added && completion == 0 to the while loop. This should stop the loop when the request is completed. All other events will not be taken into account then. You may run into trouble, if you insert multiple requests starting nearly at the same time. I hope this helps... Regards, Anjo > Hi, > > I am doing a simulation using disksim as a blackbox (using Disksim in > system level simulation as suggested in page 44 of the manual). Here is > the > situation: > > I am using the same trace and .parv files to do an interface simulation > and > an internal simulation. Both of them are giving different results. When I > observed the output event files I found that the event sequence is a lot > different in both the scenarios and I have no idea why it is happening so. > My doubt is can this happen, given that I am using the same input? > > Any help will be greatly appreciated. > > -- > Regards, > Purushotham > _______________________________________________ > Disksim-users mailing list > Disksim-users at ece.cmu.edu > https://sos.ece.cmu.edu/mailman/listinfo/disksim-users > From kollapurushotham at gmail.com Sun Dec 11 18:00:31 2011 From: kollapurushotham at gmail.com (kolla purushotham) Date: Sun, 11 Dec 2011 18:00:31 -0500 Subject: [Disksim-users] System Level Simulation Message-ID: Peter & Anjo, Thanks for the reply guys. This is exactly what i am doing (suing syssim_driver.c). The example gives a way of creating some random requests, instead of that I have created the request from a trace file (the same trace file which i used on the "storage level disksim simulation"). I am using the same parameters for both the simulations, but getting different results. I didn't understand the complete post by Anjo. However, his clue on the way system level simulation is going on makes me think that the example in the syssim_driver.c is modeled more or less like a closed system (a request is added using the disksim_interface_request_arrive() and then is allowed to process completely using disksim_interface_internal_event() without adding any new requests to the queue). And I think this is what is explained here https://sos.ece.cmu.edu/pipermail/disksim-users/2007-September/000214.html Please let me know if this makes any sense and in the mean time i will try to change the syssim_driver and see if i can make any progress. I once again thank you guys for your time. Message: 2 Date: Sat, 10 Dec 2011 01:17:54 -0500 From: Peter Macko Subject: Re: [Disksim-users] Using Disksim To: Ricardo Rey Cc: disksim-users at ece.cmu.edu Message-ID: Content-Type: text/plain; charset=iso-8859-1 Hi, There is a very simple, yet complete, example that is directly distributed as a part of the DiskSim source code - it's src/syssim_driver.c. It shows you how you can run DiskSim from your C code and pass to it your own requests one I/O request at the time. In short, you need to specify a .parv file (such as any one of those in the valid/ directory) and an output file when you initialize DiskSim using disksim_interface_initialize(), and then you can submit your own I/O requests using disksim_interface_request_arrive() as shown in the example. The only catch is that you would need to make additional calls to disksim_interface_internal_event(), but that's all shown in the example. To run the example, just compile DiskSim as usual, and then you can run something like "src/syssim valid/hp_c2490a.parv output.txt 10000" from the disksim/ directory. I hope this helps. Best, -Peter Message: 3 Date: Sat, 10 Dec 2011 13:05:44 +0100 From: vahldiek at mpi-sws.org Subject: Re: [Disksim-users] System Level Simulation To: "kolla purushotham" Cc: freesuraj at gmail.com, disksim-users at ece.cmu.edu Message-ID: <5ce977e4a056681b9ce9b215761c59ac.squirrel at mail.mpi-sws.org> Content-Type: text/plain;charset=iso-8859-15 Hi, I have seen the behavior before and studied the execution of the syssim. you will see differences at the level of the disksim_diskctlr. These differences come from an issue within the current syssim implementation in which the following happens: 1) a request is inserted into disksim 2) the request is handled 3) the method to report completion is called Until now everything seems fine, if the next request would immediately start after the request completion method is called. Unfortunately this is not the case, the syssim stays within the loop processing disksim events. /* Process events until this I/O is completed */ while(next_event >= 0) { now = next_event; next_event = -1; disksim_interface_internal_event(disksim, now, 0); } Why is this the case? The request is fully processed so there shouldn't be any events within the system, right? Disksim adds an event automatically after every request to continue reading after the request is over. This is done at the disksim_diskctlr level and continues until the segment storing the request is full. For me this meant a difference in completion time and next starting time of around 0.5ms. To address the issue I think I added && completion == 0 to the while loop. This should stop the loop when the request is completed. All other events will not be taken into account then. You may run into trouble, if you insert multiple requests starting nearly at the same time. I hope this helps... Regards, Anjo > Hi, > > I am doing a simulation using disksim as a blackbox (using Disksim in > system level simulation as suggested in page 44 of the manual). Here is > the > situation: > > I am using the same trace and .parv files to do an interface simulation > and > an internal simulation. Both of them are giving different results. When I > observed the output event files I found that the event sequence is a lot > different in both the scenarios and I have no idea why it is happening so. > My doubt is can this happen, given that I am using the same input? > > Any help will be greatly appreciated. > > -- > Regards, > Purushotham > _______________________________________________ > Disksim-users mailing list > Disksim-users at ece.cmu.edu > https://sos.ece.cmu.edu/mailman/listinfo/disksim-users > -- Regards, Purushotham -------------- next part -------------- An HTML attachment was scrubbed... URL: From pmacko at eecs.harvard.edu Sun Dec 11 22:57:07 2011 From: pmacko at eecs.harvard.edu (Peter Macko) Date: Sun, 11 Dec 2011 22:57:07 -0500 Subject: [Disksim-users] System Level Simulation In-Reply-To: References: Message-ID: <9E4621AD-7293-40A7-8602-ECFD862528DF@eecs.harvard.edu> Hi, Yes, this makes sense. The problem with the syssim_driver.c example is that all requests are processed synchronously, and there is only one outstanding request at the time. You can interleave calls to disksim_interface_request_arrive() and disksim_interface_internal_event() in such way so that there are multiple outstanding requests at any time. Just make sure that the timestamps in your calls to these two functions are monotonically increasing. Going back to the syssim_driver example, if you want to run a second I/O request at time t while the first one is still running, wait until you get (now <= t) && (t < next_event) in the "while(next_event >= 0)" loop and then make the call to disksim_interface_request_arrive() using t as a timestamp. (If the first request finishes before the time t, start it as usual.) I hope this makes sense... -Peter On Dec 11, 2011, at 6:00 PM, kolla purushotham wrote: > Peter & Anjo, > > Thanks for the reply guys. This is exactly what i am doing (suing syssim_driver.c). The example gives a way of creating some random requests, instead of that I have created the request from a trace file (the same trace file which i used on the "storage level disksim simulation"). I am using the same parameters for both the simulations, but getting different results. > > I didn't understand the complete post by Anjo. However, his clue on the way system level simulation is going on makes me think that the example in the syssim_driver.c is modeled more or less like a closed system (a request is added using the disksim_interface_request_arrive() and then is allowed to process completely using disksim_interface_internal_event() without adding any new requests to the queue). > > And I think this is what is explained here https://sos.ece.cmu.edu/pipermail/disksim-users/2007-September/000214.html > > Please let me know if this makes any sense and in the mean time i will try to change the syssim_driver and see if i can make any progress. I once again thank you guys for your time. > > Message: 2 > Date: Sat, 10 Dec 2011 01:17:54 -0500 > From: Peter Macko > Subject: Re: [Disksim-users] Using Disksim > To: Ricardo Rey > Cc: disksim-users at ece.cmu.edu > Message-ID: > Content-Type: text/plain; charset=iso-8859-1 > > Hi, > > There is a very simple, yet complete, example that is directly distributed as a part of the DiskSim source code - it's src/syssim_driver.c. It shows you how you can run DiskSim from your C code and pass to it your own requests one I/O request at the time. > > In short, you need to specify a .parv file (such as any one of those in the valid/ directory) and an output file when you initialize DiskSim using disksim_interface_initialize(), and then you can submit your own I/O requests using disksim_interface_request_arrive() as shown in the example. The only catch is that you would need to make additional calls to disksim_interface_internal_event(), but that's all shown in the example. > > To run the example, just compile DiskSim as usual, and then you can run something like "src/syssim valid/hp_c2490a.parv output.txt 10000" from the disksim/ directory. > > I hope this helps. > > Best, > > -Peter > > > > > Message: 3 > Date: Sat, 10 Dec 2011 13:05:44 +0100 > From: vahldiek at mpi-sws.org > Subject: Re: [Disksim-users] System Level Simulation > To: "kolla purushotham" > Cc: freesuraj at gmail.com, disksim-users at ece.cmu.edu > Message-ID: > <5ce977e4a056681b9ce9b215761c59ac.squirrel at mail.mpi-sws.org> > Content-Type: text/plain;charset=iso-8859-15 > > Hi, > > I have seen the behavior before and studied the execution of the syssim. > you will see differences at the level of the disksim_diskctlr. These > differences come from an issue within the current syssim implementation in > which the following happens: > 1) a request is inserted into disksim > 2) the request is handled > 3) the method to report completion is called > > Until now everything seems fine, if the next request would immediately > start after the request completion method is called. Unfortunately this is > not the case, the syssim stays within the loop processing disksim events. > /* Process events until this I/O is completed */ > while(next_event >= 0) { > now = next_event; > next_event = -1; > disksim_interface_internal_event(disksim, now, 0); > } > > Why is this the case? The request is fully processed so there shouldn't be > any events within the system, right? > Disksim adds an event automatically after every request to continue > reading after the request is over. This is done at the disksim_diskctlr > level and continues until the segment storing the request is full. > > For me this meant a difference in completion time and next starting time > of around 0.5ms. > > To address the issue I think I added && completion == 0 to the while loop. > This should stop the loop when the request is completed. All other events > will not be taken into account then. You may run into trouble, if you > insert multiple requests starting nearly at the same time. > > I hope this helps... > > Regards, > Anjo > > > Hi, > > > > I am doing a simulation using disksim as a blackbox (using Disksim in > > system level simulation as suggested in page 44 of the manual). Here is > > the > > situation: > > > > I am using the same trace and .parv files to do an interface simulation > > and > > an internal simulation. Both of them are giving different results. When I > > observed the output event files I found that the event sequence is a lot > > different in both the scenarios and I have no idea why it is happening so. > > My doubt is can this happen, given that I am using the same input? > > > > Any help will be greatly appreciated. > > > > -- > > Regards, > > Purushotham > > _______________________________________________ > > Disksim-users mailing list > > Disksim-users at ece.cmu.edu > > https://sos.ece.cmu.edu/mailman/listinfo/disksim-users > > > > > > -- > Regards, > Purushotham -------------- next part -------------- An HTML attachment was scrubbed... URL: From 05210324kw at sina.com Tue Dec 13 22:45:01 2011 From: 05210324kw at sina.com (05210324kw at sina.com) Date: Wed, 14 Dec 2011 11:45:01 +0800 Subject: [Disksim-users] The example of Disksim-3.0 executed with error Message-ID: <20111214034501.E850240B04F@mail1.webapp.51uc.com> Hi, all! I am new to Disksim, and want used disksim to execute an FTL arithmetic. I used ubuntu-10.10 as the platform, and compliled Disksim-3.0 successful. According the message of Peter, we can run the example like "src/syssim valid/hp_c2490a.parv output.txt 10000" from the disksim/ directory. But when syssim has 4 parameter, then I run the example "src/syssim valid/hp_c2490a.parv output.txt 10000 1", and an error appeared. the Error Message is as below: root at kuangwei-virtual-machine:/home/disksim-3.0# src/syssim valid/dec_rz26.parv output 10000 1*** error: couldn't open dec_rz26.diskspecs > *** assertion failed: in disksim_global_loadparams() (modules/disksim_global_param.c:90): statdeffile != 0: failed to open statdefs file! Another question is how to printf log in Disksim-3.0. I can not used "printf" function and other file operation function does not work, please give me an example. Thanks -------------- next part -------------- An HTML attachment was scrubbed... URL: From kollapurushotham at gmail.com Sun Dec 18 03:20:07 2011 From: kollapurushotham at gmail.com (kolla purushotham) Date: Sat, 17 Dec 2011 23:20:07 -0900 Subject: [Disksim-users] System Level Simulation Message-ID: Guys, First of all let me thank Peter :). This is what I ended up with to make the system level simulation work in an asynchronous way (so that some one can use it as a reference). while(fgets(line, 200, tracefile)) { sscanf(line, "%lf %d %d %d %d \n", &r.start, &r.devno, &r.blkno, &r.bytecount, &r.flags); printf("%lf %d %d %d \n", r.start, r.devno, r.blkno, r.bytecount/512); fflush(stdout); nextiotime = r.start; while((nextiotime >= next_event) & (start == 1)) // used start as a flag to mark it as a first time entry to the loop. { currtime = next_event; disksim_interface_internal_event(disksimIntr, currtime, 0); } { start = 1; currtime = nextiotime; disksim_interface_request_arrive(disksimIntr, currtime, &r); } } -- Regards, Purushotham -------------- next part -------------- An HTML attachment was scrubbed... URL: From kollapurushotham at gmail.com Thu Dec 22 16:05:12 2011 From: kollapurushotham at gmail.com (kolla purushotham) Date: Thu, 22 Dec 2011 16:05:12 -0500 Subject: [Disksim-users] System Level Simulation In-Reply-To: References: Message-ID: Guys, Now I am facing another problem. In the file disksim_interface.c it is written that the function disksim_interface_io_done_notify () can be used as a call back for request completion. /* This is the disksim callback for reporting completion of a disk * request to the system-level simulation -- the system-level * * simulation should incorporate this completion as appropriate * * (probably by inserting a simulated "disk completion interrupt" at * * the specified simulated time). Based on the requestdesc pointed to * * by "curr->buf" (below), the system-level simulation should be * able * to determine which request completed. (A ptr to the * system-level * simulator's request structure is a reasonable use of * "curr->buf".) According to this paragraph it says that curr->buf can be used at the system level driver for calculating statistics. However, buff->start is not indicating the start time of the request that got completed and is indicating the start time of the recent request scheduled (It perfectly works for synchronous requests as the example shows, but for asynchronous requests its giving out -ve response times). Am I missing something here, any advice on the situation is highly appreciated. On 18 December 2011 03:20, kolla purushotham wrote: > Guys, > > First of all let me thank Peter :). This is what I ended up with to make > the system level simulation work in an asynchronous way (so that some one > can use it as a reference). > > while(fgets(line, 200, tracefile)) > { > > sscanf(line, "%lf %d %d %d %d \n", &r.start, &r.devno, &r.blkno, > &r.bytecount, &r.flags); > printf("%lf %d %d %d \n", r.start, r.devno, r.blkno, r.bytecount/512); > fflush(stdout); > nextiotime = r.start; > > while((nextiotime >= next_event) & (start == 1)) // used start as a > flag to mark it as a first time entry to the loop. > { > currtime = next_event; > disksim_interface_internal_event(disksimIntr, currtime, 0); > } > { > start = 1; > currtime = nextiotime; > disksim_interface_request_arrive(disksimIntr, currtime, &r); > } > } > > -- > Regards, > Purushotham > -- Regards, Purushotham -------------- next part -------------- An HTML attachment was scrubbed... URL: