From a3ad058a2f992f20ef2f4994a260ca9ae5c7356a Mon Sep 17 00:00:00 2001 From: Wenchao Hao Date: Mon, 18 Nov 2024 21:33:03 +0800 Subject: [PATCH] update Signed-off-by: Wenchao Hao --- bak.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ madvise.c | 37 ++++++++++++++++++++++++++++-------- 2 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 bak.c diff --git a/bak.c b/bak.c new file mode 100644 index 0000000..54a3bec --- /dev/null +++ b/bak.c @@ -0,0 +1,56 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +unsigned long long tv_to_ms(struct timeval tv) +{ + return tv.tv_sec * 1000 + tv.tv_usec / 1000; +} + +void main() +{ + char c; + pid_t pid; + int i; + struct timeval tv_b, tv_e;; +#define SIZE 400*1024*1024 + void *p = mmap(NULL, SIZE, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (!p) { + perror("fail to get memory"); + exit(-1); + } + + for (i = 0; i < 100000; i++) { + madvise(p, SIZE, MADV_HUGEPAGE); + memset(p, 0x11, SIZE); /* write to get mem */ + + gettimeofday(&tv_b, NULL); + madvise(p, SIZE, MADV_PAGEOUT); + gettimeofday(&tv_e, NULL); + + printf("swp out bandwidth: %ld bytes/ms\n", + SIZE/(tv_to_ms(tv_e) - tv_to_ms(tv_b))); + + //pid = fork(); + + //if (pid) { + //scanf("%c", &c); + gettimeofday(&tv_b, NULL); + memset(p, 0x33, SIZE); /* write to get mem */ + gettimeofday(&tv_e, NULL); + printf("swp in bandwidth: %ld bytes/ms\n", + SIZE/(tv_to_ms(tv_e) - tv_to_ms(tv_b))); + //} + } + + while(1) { + sleep(100); + } +} diff --git a/madvise.c b/madvise.c index 1d6ad1b..136906d 100644 --- a/madvise.c +++ b/madvise.c @@ -15,9 +15,13 @@ unsigned long long tv_to_ms(struct timeval tv) void main() { + char c; + pid_t pid; + int i; + int j = 0; struct timeval tv_b, tv_e;; -#define SIZE 400*1024*1024 - void *p = mmap(NULL, SIZE, PROT_READ | PROT_WRITE, +#define SIZE 100*1024*1024 + unsigned long *p = mmap(NULL, SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (!p) { perror("fail to get memory"); @@ -25,12 +29,29 @@ void main() } madvise(p, SIZE, MADV_HUGEPAGE); - memset(p, 0x11, SIZE); /* write to get mem */ - gettimeofday(&tv_b, NULL); - madvise(p, SIZE, MADV_PAGEOUT); - gettimeofday(&tv_e, NULL); + for (j = 0; j < SIZE / 8; j+=128) + *(p + j) = j; - printf("swp out bandwidth: %ld bytes/ms\n", - SIZE/(tv_to_ms(tv_e) - tv_to_ms(tv_b))); + for (i = 0; i < 3; i++) { + gettimeofday(&tv_b, NULL); + madvise(p, SIZE, MADV_PAGEOUT); + gettimeofday(&tv_e, NULL); + + printf("swp out bandwidth: %ld bytes/ms\n", + SIZE/(tv_to_ms(tv_e) - tv_to_ms(tv_b))); + + gettimeofday(&tv_b, NULL); + for (j = 0; j < SIZE / 8; j+=128) + *(p + j) = j; + gettimeofday(&tv_e, NULL); + printf("swp in bandwidth: %ld bytes/ms\n", + SIZE/(tv_to_ms(tv_e) - tv_to_ms(tv_b))); + } + + //madvise(p, SIZE, MADV_PAGEOUT); + + //while(1) { + // sleep(100); + //} }