dlugidll wrote:
We prefer to use bonnie++ for benchmarking "real-world" harddisk performance. hdparm just doesn't cut it.
czyli jednak jest to test dysku, a moze moj angielski jest bardzo slaby?
Chyba trochę nieścisłości w tym. Zrobiłem sam sobie test:
Code: Select all
gentoo ~ # cat disktest.c
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/time.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int fd;
int toread;
int buffersize;
int i;
long long readbytes = 0LL;
void *buffer;
struct timeval tv1;
struct timeval tv2;
struct timezone tz;
if (!argv[1] || !argv[2] || !argv[3] || !atoi(argv[2]) || !atoi(argv[3])) {
fprintf(stderr, "%s <plik> <ile_razy> <po_ile_kb>\n", argv[0]);
return 1;
}
toread = atoi(argv[2]);
buffersize = atoi(argv[3]);
if ((buffer = malloc(buffersize)) == NULL) {
fprintf(stderr, "Błąd malloc(%d): %s\n", buffersize, strerror(errno));
return 1;
}
if ((fd = open(argv[1], O_RDONLY)) == -1) {
fprintf(stderr, "Błąd open(%s): %s\n", argv[1], strerror(errno));
free(buffer);
return 1;
}
gettimeofday(&tv1, &tz);
for (i = 0; i < toread; ++i) {
if (read(fd, buffer, buffersize) == -1) {
fprintf(stderr, "Błąd read(%d, %p, %d): %s\n", fd, buffer, buffersize);
close(fd);
free(buffer);
return 1;
}
readbytes += buffersize;
}
gettimeofday(&tv2, &tz);
printf("Odczytano %dx%d bajtów w %d sekund %d ms\n", toread, buffersize, tv2.tv_sec - tv1.tv_sec,
(tv2.tv_usec - tv1.tv_usec) < 0 ? tv1.tv_usec - tv2.tv_usec : tv2.tv_usec - tv1.tv_usec);
close(fd);
free(buffer);
return 0;
}
gentoo ~ # gcc -O2 -s -o disktest disktest.c
gentoo ~ # ./disktest /dev/sda 1000 1048576
Odczytano 1000x1048576 bajtów w 31 sekund 46997 ms
gentoo ~ # ./disktest /home/test 1000 1048576
Odczytano 1000x1048576 bajtów w 48 sekund 740969 ms
gentoo ~ # ./disktest /dev/sda 1000 1048576
Odczytano 1000x1048576 bajtów w 34 sekund 403505 ms
gentoo ~ # ./disktest /home/test 1000 1048576
Odczytano 1000x1048576 bajtów w 51 sekund 243045 ms
Program odczytuje sobie z podanego pliku n razy m bajtów i zapisuje do pamięci i liczy czas.
- /home/test to plik 1GB na Reiser4 i dysku jak niżej,
- /dev/sda to Maxtor 6Y080M0 SATA,
- kernel 2.6.14-suspend2.
Potem przypomniałem sobie że jest jeszcze dd
Code: Select all
gentoo /home # dd if=/dev/sda of=/dev/null bs=1024k count=1000
1000+0 rekordów wczytanych
1000+0 rekordów zapisanych
1048576000 bytes (1,0 GB) copied, 32,8381 seconds, 31,9 MB/s
gentoo /home # dd if=/home/test of=/dev/null bs=1024k count=1000
1000+0 rekordów wczytanych
1000+0 rekordów zapisanych
1048576000 bytes (1,0 GB) copied, 51,9101 seconds, 20,2 MB/s
Aha i przed chwilą zobaczyłem, że w na drugiej konsoli leci kompilacja Qt 4.1
EDIT:
Idle z uruchomionym KDE 3.5:
Code: Select all
gentoo ~ # ./disktest /dev/sda 1000 $[1024*1024]
Odczytano 1000x1048576 bajtów w 20 sekund 687700 ms
gentoo ~ # ./disktest /home/test 1000 $[1024*1024]
Odczytano 1000x1048576 bajtów w 36 sekund 519719 ms
--
Pozdrawiam,
Artur