int main() { uint64_t mem_total_hw = 10; uint64_t mem_total_sw = 0; memtotal (mem_total_hw, mem_array, 10); for (int i = 0; i < 10; i++) { mem_total_sw += mem_array[i]; } printf ("mem_total_hw = %d\n", mem_total_hw); printf ("mem_total_sw = %d\n", mem_total_sw); }
int main (int argc, char *argv[]) { u8 *buf; int fd; ssize_t haveRead; size_t toRead; unsigned i; unsigned bufsize; unsigned n; u64 size; u64 rest; u64 l; drop_caches(); Option.file_size = 0; Option.iterations = 1; Option.loops = 1; punyopt(argc, argv, myopt, "b:"); n = Option.iterations; bufsize = 1 << Bufsize_log2; buf = emalloc(bufsize); size = Option.file_size; if (!size) { size = memtotal() / FRACTION_OF_MEMORY; } if (Hog_memory) { hog_leave_memory(size / FRACTION_OF_FILE_SIZE); } fd = open(Option.file, O_RDWR | O_CREAT | O_TRUNC, 0666); fill_file(fd, size); for (l = 0; l < Option.loops; l++) { startTimer(); for (i = 0; i < n; ++i) { for (rest = size; rest; rest -= haveRead) { if (rest > bufsize) { toRead = bufsize; } else { toRead = rest; } haveRead = read(fd, buf, toRead); if (haveRead != toRead) { if (haveRead == -1) { perror("read"); exit(1); } fprintf(stderr, "toRead=%llu != haveRead=%lld\n", (u64)toRead, (s64)haveRead); exit(1); } } lseek(fd, 0, 0); } stopTimer(); printf("size=%lld n=%d ", size, n); prTimer(); printf("\t%6.4g MiB/s\n", (double)(n * size) / get_avg() / MEBI); } close(fd); unlink(Option.file); return 0; }