arm64: rusage: Fix counting contiguous PTEs
Change-Id: I7e89c25d49dc1f6efe1c27c76c66c6fedd22af1f Refs: #1342
This commit is contained in:
@ -2671,17 +2671,28 @@ int set_range_l1(void *args0, pte_t *ptep, uintptr_t base, uintptr_t start,
|
||||
}
|
||||
|
||||
phys = args->phys + (base - start);
|
||||
if (__page_offset(base, PTL1_CONT_SIZE) == 0) { //check head pte
|
||||
|
||||
/* Check if we can begin / end a series of contiguous PTEs */
|
||||
if (__page_offset(base, PTL1_CONT_SIZE) == 0) {
|
||||
uintptr_t next_addr = base + PTL1_CONT_SIZE;
|
||||
|
||||
if (end < next_addr) {
|
||||
next_addr = end;
|
||||
}
|
||||
|
||||
// set contiguous bit until the next head pte
|
||||
// if phys is aligned and range does not end early.
|
||||
/* Begin the series if physical address is also aligned and
|
||||
* the range covers the series. Don't start or end it if
|
||||
* physical address is not aligned or the range ends early.
|
||||
*/
|
||||
if (__page_offset(phys | next_addr, PTL1_CONT_SIZE) == 0) {
|
||||
args->attr[0] |= PTE_CONT;
|
||||
if (rusage_memory_stat_add(args->range, phys,
|
||||
PTL1_CONT_SIZE,
|
||||
PTL1_CONT_SIZE)) {
|
||||
dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__, base, phys,
|
||||
PTL1_CONT_SIZE, PTL1_CONT_SIZE);
|
||||
}
|
||||
} else {
|
||||
args->attr[0] &= ~PTE_CONT;
|
||||
}
|
||||
@ -2691,12 +2702,13 @@ int set_range_l1(void *args0, pte_t *ptep, uintptr_t base, uintptr_t start,
|
||||
|
||||
error = 0;
|
||||
// call memory_stat_rss_add() here because pgshift is resolved here
|
||||
if (rusage_memory_stat_add(args->range, phys, PTL1_SIZE, PTL1_SIZE)) {
|
||||
dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__, base, phys, PTL1_SIZE, PTL1_SIZE);
|
||||
} else {
|
||||
dkprintf("%s: !calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
__func__, base, phys, PTL1_SIZE, PTL1_SIZE);
|
||||
if (!(args->attr[0] & PTE_CONT)) {
|
||||
if (rusage_memory_stat_add(args->range, phys,
|
||||
PTL1_SIZE, PTL1_SIZE)) {
|
||||
dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__, base, phys,
|
||||
PTL1_SIZE, PTL1_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
@ -2760,7 +2772,9 @@ retry:
|
||||
|
||||
phys = args->phys + (base - start);
|
||||
|
||||
//check head pte
|
||||
/* Check if we can begin / end a series of
|
||||
* contiguous PTEs
|
||||
*/
|
||||
if (__page_offset(base, tbl.cont_pgsize) == 0) {
|
||||
uintptr_t next_addr = base +
|
||||
tbl.cont_pgsize;
|
||||
@ -2769,11 +2783,24 @@ retry:
|
||||
next_addr = end;
|
||||
}
|
||||
|
||||
// set contiguous bit until the
|
||||
// next head pte if phys is aligned
|
||||
// and range does not end early.
|
||||
/* Begin the series if physical address
|
||||
* is also aligned and the range covers
|
||||
* the series. Don't start or end it if
|
||||
* physical address is not aligned or
|
||||
* the range ends early.
|
||||
*/
|
||||
if (__page_offset(phys | next_addr, tbl.cont_pgsize) == 0) {
|
||||
args->attr[level-1] |= PTE_CONT;
|
||||
if (rusage_memory_stat_add(args->range,
|
||||
phys,
|
||||
tbl.cont_pgsize,
|
||||
tbl.cont_pgsize)) {
|
||||
dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__,
|
||||
base, phys,
|
||||
tbl.cont_pgsize,
|
||||
tbl.cont_pgsize);
|
||||
}
|
||||
} else {
|
||||
args->attr[level-1] &= ~PTE_CONT;
|
||||
}
|
||||
@ -2781,21 +2808,23 @@ retry:
|
||||
|
||||
ptl_set(ptep, phys | args->attr[level-1],
|
||||
level);
|
||||
|
||||
error = 0;
|
||||
dkprintf("set_range_middle(%lx,%lx,%lx,%d):"
|
||||
"large page. %d %lx\n",
|
||||
base, start, end, level, error, *ptep);
|
||||
// Call memory_stat_rss_add() here because pgshift is resolved here
|
||||
if (rusage_memory_stat_add(args->range, phys,
|
||||
tbl.pgsize,
|
||||
tbl.pgsize)) {
|
||||
dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__, base, phys,
|
||||
tbl.pgsize, tbl.pgsize);
|
||||
} else {
|
||||
dkprintf("%s: !calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
__func__, base, phys,
|
||||
tbl.pgsize, tbl.pgsize);
|
||||
if (!(args->attr[level-1] & PTE_CONT)) {
|
||||
if (rusage_memory_stat_add(args->range,
|
||||
phys,
|
||||
tbl.pgsize,
|
||||
tbl.pgsize)) {
|
||||
dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__, base,
|
||||
phys,
|
||||
tbl.pgsize,
|
||||
tbl.pgsize);
|
||||
}
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
14
test/issues/1342/1342.sh
Executable file
14
test/issues/1342/1342.sh
Executable file
@ -0,0 +1,14 @@
|
||||
echo "Don't forget to apply patch.mck and patch.ihk"
|
||||
|
||||
. $HOME/.mck_test_config
|
||||
|
||||
BOOTPARAM="-c 4-7 -m 512M@0"
|
||||
|
||||
. ../../common.sh
|
||||
|
||||
$BIN/mcexec ./get_rusage 0
|
||||
$BIN/mcexec ./issue_1325
|
||||
$BIN/mcexec ./get_rusage 0
|
||||
|
||||
$SBIN/ihkosctl 0 kmsg > ./log
|
||||
cat ./log | perl match.pl > ./diff
|
||||
14
test/issues/1342/Makefile
Normal file
14
test/issues/1342/Makefile
Normal file
@ -0,0 +1,14 @@
|
||||
include $(HOME)/.mck_test_config.mk
|
||||
|
||||
CFLAGS=-g -O0 -Wall -I$(MCK_DIR)/include
|
||||
LDFLAGS=-L$(MCK_DIR)/lib64 -lihk -Wl,-rpath=$(MCK_DIR)/lib64
|
||||
|
||||
all:
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) get_rusage.c -o get_rusage
|
||||
$(CC) $(CFLAGS) issue_1325.c -o issue_1325
|
||||
|
||||
test: all
|
||||
./1342.sh
|
||||
|
||||
clean:
|
||||
rm -f get_rusage issue_1325
|
||||
18
test/issues/1342/README
Normal file
18
test/issues/1342/README
Normal file
@ -0,0 +1,18 @@
|
||||
==========
|
||||
How to run
|
||||
==========
|
||||
$ (cd <mckernel>; patch -p1 < test/issues/1342/patch.mck)
|
||||
$ (cd <ihk>; patch -p1 < test/issues/1342/patch.ihk)
|
||||
Build McKernel
|
||||
$ make test
|
||||
Check if "log" file contains "<address>+,..." and the size of "diff"
|
||||
file is zero.
|
||||
|
||||
================
|
||||
Test description
|
||||
================
|
||||
(1) Show memory_stat_rss[]
|
||||
(2) malloc 350 MB, touch the region, free it
|
||||
(3) malloc 400 MB, touch the region, free it
|
||||
(4) Show memory_stat_rss[], expecting the amounts are the same as in
|
||||
(1)
|
||||
109
test/issues/1342/get_rusage.c
Normal file
109
test/issues/1342/get_rusage.c
Normal file
@ -0,0 +1,109 @@
|
||||
/* get_rusage.c COPYRIGHT FUJITSU LIMITED 2019 */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ihklib.h>
|
||||
#include <ihk/ihk_rusage.h>
|
||||
|
||||
static void usage(char *cmd)
|
||||
{
|
||||
printf("Usage:\n");
|
||||
printf(" %s <os_number>\n", cmd);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int os_num = 0;
|
||||
int ret = -1;
|
||||
int i = 0;
|
||||
int nonzero = 0;
|
||||
struct ihk_os_rusage mck_rusage;
|
||||
|
||||
if (argc != 2) {
|
||||
usage(argv[0]);
|
||||
goto out;
|
||||
}
|
||||
|
||||
os_num = atoi(argv[1]);
|
||||
if (os_num < 0 || 63 < os_num) {
|
||||
printf("Invalid argument 1 os_num.\n");
|
||||
usage(argv[0]);
|
||||
goto out;
|
||||
}
|
||||
|
||||
memset(&mck_rusage, 0, sizeof(mck_rusage));
|
||||
ret = ihk_os_getrusage(os_num, &mck_rusage, sizeof(mck_rusage));
|
||||
if (ret) {
|
||||
perror("ihk_os_getrusage()");
|
||||
goto out;
|
||||
}
|
||||
|
||||
printf("show rusage:\n");
|
||||
nonzero = 0;
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
if (mck_rusage.memory_stat_rss[i] != 0) {
|
||||
printf(" memory_stat_rss[%d] : 0x%lx\n", i,
|
||||
mck_rusage.memory_stat_rss[i]);
|
||||
nonzero = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (nonzero == 0) {
|
||||
printf(" memory_stat_rss is all 0x0\n");
|
||||
}
|
||||
|
||||
nonzero = 0;
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
if (mck_rusage.memory_stat_mapped_file[i] != 0) {
|
||||
printf(" memory_stat_mapped_file[%d] : 0x%lx\n", i,
|
||||
mck_rusage.memory_stat_mapped_file[i]);
|
||||
nonzero = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (nonzero == 0) {
|
||||
printf(" memory_stat_mapped_file is all 0x0\n");
|
||||
}
|
||||
|
||||
printf(" memory_max_usage : 0x%lx\n", mck_rusage.memory_max_usage);
|
||||
printf(" memory_kmem_usage : 0x%lx\n", mck_rusage.memory_kmem_usage);
|
||||
printf(" memory_kmem_max_usage : 0x%lx\n",
|
||||
mck_rusage.memory_kmem_max_usage);
|
||||
|
||||
nonzero = 0;
|
||||
for (i = 0; i < IHK_MAX_NUM_NUMA_NODES; i++) {
|
||||
if (mck_rusage.memory_numa_stat[i] != 0) {
|
||||
printf(" memory_numa_stat[%d] : 0x%lx\n", i,
|
||||
mck_rusage.memory_numa_stat[i]);
|
||||
nonzero = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (nonzero == 0) {
|
||||
printf(" memory_numa_stat is all 0x0\n");
|
||||
}
|
||||
|
||||
printf(" cpuacct_stat_system : 0x%lx\n",
|
||||
mck_rusage.cpuacct_stat_system);
|
||||
printf(" cpuacct_stat_user : 0x%lx\n", mck_rusage.cpuacct_stat_user);
|
||||
printf(" cpuacct_usage : 0x%lx\n", mck_rusage.cpuacct_usage);
|
||||
|
||||
nonzero = 0;
|
||||
for (i = 0; i < IHK_MAX_NUM_CPUS; i++) {
|
||||
if (mck_rusage.cpuacct_usage_percpu[i] != 0) {
|
||||
printf(" cpuacct_usage_percpu[%d] : 0x%lx\n", i,
|
||||
mck_rusage.cpuacct_usage_percpu[i]);
|
||||
nonzero = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (nonzero == 0) {
|
||||
printf(" cpuacct_usage_percpu is all 0x0\n");
|
||||
}
|
||||
|
||||
printf(" num_threads : 0x%x\n", mck_rusage.num_threads);
|
||||
printf(" max_num_threads : 0x%x\n", mck_rusage.max_num_threads);
|
||||
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
47
test/issues/1342/issue_1325.c
Normal file
47
test/issues/1342/issue_1325.c
Normal file
@ -0,0 +1,47 @@
|
||||
/* issue_1325.c COPYRIGHT FUJITSU LIMITED 2019 */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
/* for 512MiB allocated McKernel failure sizes */
|
||||
#define MALLOC1_SIZE (350 * 1024 * 1024)
|
||||
#define MALLOC2_SIZE (400 * 1024 * 1024)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
const long pgsize = sysconf(_SC_PAGESIZE);
|
||||
char *p1 = NULL;
|
||||
char *p2 = NULL;
|
||||
size_t off = 0;
|
||||
int ret = -1;
|
||||
|
||||
p1 = malloc(MALLOC1_SIZE);
|
||||
if (p1 == NULL) {
|
||||
printf("malloc1:allocate failed.\n");
|
||||
goto err;
|
||||
}
|
||||
printf("malloc1:allocate 0x%lx\n", (unsigned long)p1);
|
||||
|
||||
for (off = 0; off < MALLOC1_SIZE; off += pgsize) {
|
||||
*(p1 + off) = 'Z';
|
||||
}
|
||||
printf("malloc1:access ok, free\n");
|
||||
free(p1);
|
||||
|
||||
p2 = malloc(MALLOC2_SIZE);
|
||||
if (p2 == NULL) {
|
||||
printf("malloc2:allocate failed.\n");
|
||||
goto err;
|
||||
}
|
||||
printf("malloc2:allocate 0x%lx\n", (unsigned long)p2);
|
||||
|
||||
for (off = 0; off < MALLOC2_SIZE; off += pgsize) {
|
||||
*(p2 + off) = 'Z';
|
||||
}
|
||||
printf("malloc2:access ok, free\n");
|
||||
free(p2);
|
||||
|
||||
ret = 0;
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
20
test/issues/1342/match.pl
Executable file
20
test/issues/1342/match.pl
Executable file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
while(<>) {
|
||||
if(/\[\s+\d+\]\:\s([^+^ ]+)\+,/) {
|
||||
$addr = $1;
|
||||
$count{$addr}++;
|
||||
#print $addr . "\n";
|
||||
}
|
||||
if(/\[\s+\d+\]\:\s([^-^ ]+)\-,/) {
|
||||
$addr = $1;
|
||||
$count{$addr}--;
|
||||
#print $addr . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
foreach $key (sort keys(%count)) {
|
||||
if($count{$key} != 0) {
|
||||
print $key.",count=".$count{$key}."\n";
|
||||
}
|
||||
}
|
||||
13
test/issues/1342/patch.ihk
Normal file
13
test/issues/1342/patch.ihk
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/linux/include/ihk/ihk_debug.h b/linux/include/ihk/ihk_debug.h
|
||||
index 9b53dd7..90ea713 100644
|
||||
--- a/linux/include/ihk/ihk_debug.h
|
||||
+++ b/linux/include/ihk/ihk_debug.h
|
||||
@@ -8,7 +8,7 @@
|
||||
#ifndef IHK_DEBUG_H_INCLUDED
|
||||
#define IHK_DEBUG_H_INCLUDED
|
||||
|
||||
-#define IHK_KMSG_SIZE 8192
|
||||
+#define IHK_KMSG_SIZE (1UL<<21)
|
||||
#define IHK_KMSG_HIGH_WATER_MARK (IHK_KMSG_SIZE / 2)
|
||||
#define IHK_KMSG_NOTIFY_DELAY 400 /* Unit is us, 400 us would avoid overloading fwrite of ihkmond */
|
||||
|
||||
272
test/issues/1342/patch.mck
Normal file
272
test/issues/1342/patch.mck
Normal file
@ -0,0 +1,272 @@
|
||||
diff --git a/arch/arm64/kernel/memory.c b/arch/arm64/kernel/memory.c
|
||||
index 30ec5eed..97d814b3 100644
|
||||
--- a/arch/arm64/kernel/memory.c
|
||||
+++ b/arch/arm64/kernel/memory.c
|
||||
@@ -1715,7 +1715,7 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
|
||||
}
|
||||
tt[i] = pte;
|
||||
if (pgsize == PTL3_SIZE) {
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n",
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n",
|
||||
pte_is_fileoff(ptep, pgsize) ?
|
||||
pte_get_off(&pte, pgsize) :
|
||||
pte_get_phys(&pte),
|
||||
@@ -1723,7 +1723,7 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
|
||||
memory_stat_rss_add(PTL2_SIZE, PTL2_SIZE);
|
||||
}
|
||||
else if (pgsize == PTL2_SIZE) {
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n",
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n",
|
||||
pte_is_fileoff(ptep, pgsize) ?
|
||||
pte_get_off(&pte, pgsize) :
|
||||
pte_get_phys(&pte),
|
||||
@@ -1737,7 +1737,7 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
|
||||
PFL_PDIR_TBL_ATTR;
|
||||
ptl_set(ptep, d_table, table_level);
|
||||
|
||||
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n",
|
||||
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n",
|
||||
phys_base, __func__, pgsize, pgsize);
|
||||
memory_stat_rss_sub(pgsize, pgsize);
|
||||
|
||||
@@ -2147,7 +2147,7 @@ static void unmap_free_stat(struct page *page, unsigned long phys,
|
||||
if (!page || page_unmap(page)) {
|
||||
ihk_mc_free_pages_user(phys_to_virt(phys),
|
||||
free_size >> PAGE_SHIFT);
|
||||
- dkprintf("%lx-,%s: memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
+ kprintf("%lx-,%s: memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, func, phys, free_size, free_size);
|
||||
memory_stat_rss_sub(free_size, free_size);
|
||||
}
|
||||
@@ -2689,7 +2689,7 @@ int set_range_l1(void *args0, pte_t *ptep, uintptr_t base, uintptr_t start,
|
||||
if (rusage_memory_stat_add(args->range, phys,
|
||||
PTL1_CONT_SIZE,
|
||||
PTL1_CONT_SIZE)) {
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__, base, phys,
|
||||
PTL1_CONT_SIZE, PTL1_CONT_SIZE);
|
||||
}
|
||||
@@ -2705,7 +2705,7 @@ int set_range_l1(void *args0, pte_t *ptep, uintptr_t base, uintptr_t start,
|
||||
if (!(args->attr[0] & PTE_CONT)) {
|
||||
if (rusage_memory_stat_add(args->range, phys,
|
||||
PTL1_SIZE, PTL1_SIZE)) {
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__, base, phys,
|
||||
PTL1_SIZE, PTL1_SIZE);
|
||||
}
|
||||
@@ -2795,7 +2795,7 @@ retry:
|
||||
phys,
|
||||
tbl.cont_pgsize,
|
||||
tbl.cont_pgsize)) {
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__,
|
||||
base, phys,
|
||||
tbl.cont_pgsize,
|
||||
@@ -2819,7 +2819,7 @@ retry:
|
||||
phys,
|
||||
tbl.pgsize,
|
||||
tbl.pgsize)) {
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__, base,
|
||||
phys,
|
||||
tbl.pgsize,
|
||||
diff --git a/arch/x86_64/kernel/memory.c b/arch/x86_64/kernel/memory.c
|
||||
index df545e1b..c99db31e 100644
|
||||
--- a/arch/x86_64/kernel/memory.c
|
||||
+++ b/arch/x86_64/kernel/memory.c
|
||||
@@ -893,11 +893,11 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
|
||||
pt->entry[i] = pte;
|
||||
switch(pgsize) {
|
||||
case PTL3_SIZE:
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n", pte_is_fileoff(ptep, pgsize) ? pte_get_off(&pte, pgsize) : pte_get_phys(&pte), __FUNCTION__, PTL2_SIZE, PTL2_SIZE);
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n", pte_is_fileoff(ptep, pgsize) ? pte_get_off(&pte, pgsize) : pte_get_phys(&pte), __FUNCTION__, PTL2_SIZE, PTL2_SIZE);
|
||||
memory_stat_rss_add(PTL2_SIZE, PTL2_SIZE);
|
||||
break;
|
||||
case PTL2_SIZE:
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n", pte_is_fileoff(ptep, pgsize) ? pte_get_off(&pte, pgsize) : pte_get_phys(&pte), __FUNCTION__, PTL1_SIZE, PTL1_SIZE);
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),size=%ld,pgsize=%ld\n", pte_is_fileoff(ptep, pgsize) ? pte_get_off(&pte, pgsize) : pte_get_phys(&pte), __FUNCTION__, PTL1_SIZE, PTL1_SIZE);
|
||||
memory_stat_rss_add(PTL1_SIZE, PTL1_SIZE);
|
||||
break;
|
||||
}
|
||||
@@ -906,7 +906,7 @@ static int split_large_page(pte_t *ptep, size_t pgsize)
|
||||
|
||||
*ptep = (virt_to_phys(pt) & PT_PHYSMASK) | PFL2_PDIR_ATTR;
|
||||
|
||||
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys_base, __FUNCTION__, pgsize, pgsize);
|
||||
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys_base, __FUNCTION__, pgsize, pgsize);
|
||||
memory_stat_rss_sub(pgsize, pgsize);
|
||||
|
||||
/* Do not do this check for large pages as they don't come from the zeroobj
|
||||
@@ -1410,7 +1410,7 @@ static int clear_range_l1(void *args0, pte_t *ptep, uint64_t base,
|
||||
if (!args->memobj || !(args->memobj->flags & MF_XPMEM)) {
|
||||
ihk_mc_free_pages_user(phys_to_virt(phys), 1);
|
||||
dkprintf("%s: freeing regular page at 0x%lx\n", __FUNCTION__, base);
|
||||
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL1_SIZE, PTL1_SIZE);
|
||||
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL1_SIZE, PTL1_SIZE);
|
||||
memory_stat_rss_sub(PTL1_SIZE, PTL1_SIZE);
|
||||
} else {
|
||||
dkprintf("%s: XPMEM attach,phys=%lx\n", __FUNCTION__, phys);
|
||||
@@ -1419,7 +1419,7 @@ static int clear_range_l1(void *args0, pte_t *ptep, uint64_t base,
|
||||
ihk_mc_free_pages_user(phys_to_virt(phys), 1);
|
||||
dkprintf("%s: freeing file-backed page at 0x%lx\n", __FUNCTION__, base);
|
||||
/* Track page->count for !MF_PREMAP pages */
|
||||
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL1_SIZE, PTL1_SIZE);
|
||||
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL1_SIZE, PTL1_SIZE);
|
||||
rusage_memory_stat_sub(args->memobj, PTL1_SIZE, PTL1_SIZE);
|
||||
}
|
||||
} else {
|
||||
@@ -1479,7 +1479,7 @@ static int clear_range_l2(void *args0, pte_t *ptep, uint64_t base,
|
||||
ihk_mc_free_pages_user(phys_to_virt(phys),
|
||||
PTL2_SIZE/PTL1_SIZE);
|
||||
dkprintf("%s: freeing large page at 0x%lx\n", __FUNCTION__, base);
|
||||
- dkprintf("%lx-,%s: memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old),__FUNCTION__, pte_get_phys(&old), PTL2_SIZE, PTL2_SIZE);
|
||||
+ kprintf("%lx-,%s: memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old),__FUNCTION__, pte_get_phys(&old), PTL2_SIZE, PTL2_SIZE);
|
||||
memory_stat_rss_sub(PTL2_SIZE, PTL2_SIZE);
|
||||
} else {
|
||||
dkprintf("%s: XPMEM attach,phys=%lx\n", __FUNCTION__, phys);
|
||||
@@ -1489,7 +1489,7 @@ static int clear_range_l2(void *args0, pte_t *ptep, uint64_t base,
|
||||
PTL2_SIZE/PTL1_SIZE);
|
||||
dkprintf("%s: having unmapped page-struct, freeing large page at 0x%lx\n", __FUNCTION__, base);
|
||||
/* Track page->count for !MF_PREMAP pages */
|
||||
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL2_SIZE, PTL2_SIZE);
|
||||
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL2_SIZE, PTL2_SIZE);
|
||||
rusage_memory_stat_sub(args->memobj, PTL2_SIZE, PTL2_SIZE);
|
||||
}
|
||||
}
|
||||
@@ -1563,7 +1563,7 @@ static int clear_range_l3(void *args0, pte_t *ptep, uint64_t base,
|
||||
if (!args->memobj || !(args->memobj->flags & MF_XPMEM)) {
|
||||
ihk_mc_free_pages_user(phys_to_virt(phys),
|
||||
PTL3_SIZE/PTL1_SIZE);
|
||||
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%ld,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL3_SIZE, PTL3_SIZE);
|
||||
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%ld,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL3_SIZE, PTL3_SIZE);
|
||||
memory_stat_rss_sub(PTL3_SIZE, PTL3_SIZE);
|
||||
} else {
|
||||
dkprintf("%s: XPMEM attach,phys=%lx\n", __FUNCTION__, phys);
|
||||
@@ -1572,7 +1572,7 @@ static int clear_range_l3(void *args0, pte_t *ptep, uint64_t base,
|
||||
ihk_mc_free_pages_user(phys_to_virt(phys),
|
||||
PTL3_SIZE/PTL1_SIZE);
|
||||
/* Track page->count for !MF_PREMAP pages */
|
||||
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL3_SIZE, PTL3_SIZE);
|
||||
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n", pte_get_phys(&old), __FUNCTION__, pte_get_phys(&old), PTL3_SIZE, PTL3_SIZE);
|
||||
rusage_memory_stat_sub(args->memobj, PTL3_SIZE, PTL3_SIZE);
|
||||
}
|
||||
}
|
||||
@@ -1895,7 +1895,7 @@ int set_range_l1(void *args0, pte_t *ptep, uintptr_t base, uintptr_t start,
|
||||
error = 0;
|
||||
// call memory_stat_rss_add() here because pgshift is resolved here
|
||||
if (rusage_memory_stat_add(args->range, phys, PTL1_SIZE, PTL1_SIZE)) {
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL1_SIZE, PTL1_SIZE);
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL1_SIZE, PTL1_SIZE);
|
||||
} else {
|
||||
dkprintf("%s: !calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", __FUNCTION__, base, phys, PTL1_SIZE, PTL1_SIZE);
|
||||
}
|
||||
@@ -1933,7 +1933,7 @@ retry:
|
||||
base, start, end, error, *ptep);
|
||||
// Call memory_stat_rss_add() here because pgshift is resolved here
|
||||
if (rusage_memory_stat_add(args->range, phys, PTL2_SIZE, PTL2_SIZE)) {
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL2_SIZE, PTL2_SIZE);
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL2_SIZE, PTL2_SIZE);
|
||||
} else {
|
||||
dkprintf("%s: !calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", __FUNCTION__, base, phys, PTL2_SIZE, PTL2_SIZE);
|
||||
}
|
||||
@@ -2022,7 +2022,7 @@ retry:
|
||||
|
||||
// Call memory_stat_rss_add() here because pgshift is resolved here
|
||||
if (rusage_memory_stat_add(args->range, phys, PTL3_SIZE, PTL3_SIZE)) {
|
||||
- dkprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL3_SIZE, PTL3_SIZE);
|
||||
+ kprintf("%lx+,%s: calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", phys, __FUNCTION__, base, phys, PTL3_SIZE, PTL3_SIZE);
|
||||
} else {
|
||||
dkprintf("%s: !calling memory_stat_rss_add(),base=%lx,phys=%lx,size=%ld,pgsize=%ld\n", __FUNCTION__, base, phys, PTL3_SIZE, PTL3_SIZE);
|
||||
}
|
||||
diff --git a/kernel/fileobj.c b/kernel/fileobj.c
|
||||
index ed6dd1df..a3c7b6f5 100644
|
||||
--- a/kernel/fileobj.c
|
||||
+++ b/kernel/fileobj.c
|
||||
@@ -300,7 +300,7 @@ int fileobj_create(int fd, struct memobj **objp, int *maxprotp, int flags,
|
||||
goto error_cleanup;
|
||||
}
|
||||
// Track change in memobj->pages[] for MF_PREMAP pages (MPOL_SHM_PREMAP case)
|
||||
- dkprintf("%lx+,%s: MF_PREMAP&&MPOL_SHM_PREMAP,memory_stat_rss_add,phys=%lx,size=%ld,pgsize=%ld\n", virt_to_phys(mo->pages[j]), __FUNCTION__, virt_to_phys(mo->pages[j]), PAGE_SIZE, PAGE_SIZE);
|
||||
+ kprintf("%lx+,%s: MF_PREMAP&&MPOL_SHM_PREMAP,memory_stat_rss_add,phys=%lx,size=%ld,pgsize=%ld\n", virt_to_phys(mo->pages[j]), __FUNCTION__, virt_to_phys(mo->pages[j]), PAGE_SIZE, PAGE_SIZE);
|
||||
rusage_memory_stat_mapped_file_add(PAGE_SIZE, PAGE_SIZE);
|
||||
|
||||
memset(mo->pages[j], 0, PAGE_SIZE);
|
||||
@@ -390,7 +390,7 @@ static void fileobj_free(struct memobj *memobj)
|
||||
/* Track change in page->count for !MF_PREMAP pages.
|
||||
* It is decremented here or in clear_range()
|
||||
*/
|
||||
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
phys, __func__, phys, PAGE_SIZE, PAGE_SIZE);
|
||||
rusage_memory_stat_mapped_file_sub(PAGE_SIZE,
|
||||
PAGE_SIZE);
|
||||
@@ -409,7 +409,7 @@ static void fileobj_free(struct memobj *memobj)
|
||||
// Track change in fileobj->pages[] for MF_PREMAP pages
|
||||
// Note that page_unmap() isn't called for MF_PREMAP in
|
||||
// free_process_memory_range() --> ihk_mc_pt_free_range()
|
||||
- dkprintf("%lx-,%s: memory_stat_rss_sub,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
+ kprintf("%lx-,%s: memory_stat_rss_sub,phys=%lx,size=%ld,pgsize=%ld\n",
|
||||
virt_to_phys(to_memobj(obj)->pages[i]),
|
||||
__func__,
|
||||
virt_to_phys(to_memobj(obj)->pages[i]),
|
||||
@@ -595,7 +595,7 @@ static int fileobj_get_page(struct memobj *memobj, off_t off,
|
||||
dkprintf("%s: MF_ZEROFILL: off: %lu -> 0x%lx allocated\n",
|
||||
__FUNCTION__, off, virt_to_phys(virt));
|
||||
// Track change in memobj->pages[] for MF_PREMAP pages (!MPOL_SHM_PREMAP case)
|
||||
- dkprintf("%lx+,%s: MF_PREMAP&&!MPOL_SHM_PREMAP,memory_stat_rss_add,phys=%lx,size=%ld,pgsize=%ld\n", virt_to_phys(virt), __FUNCTION__, virt_to_phys(virt), PAGE_SIZE, PAGE_SIZE);
|
||||
+ kprintf("%lx+,%s: MF_PREMAP&&!MPOL_SHM_PREMAP,memory_stat_rss_add,phys=%lx,size=%ld,pgsize=%ld\n", virt_to_phys(virt), __FUNCTION__, virt_to_phys(virt), PAGE_SIZE, PAGE_SIZE);
|
||||
rusage_memory_stat_mapped_file_add(PAGE_SIZE, PAGE_SIZE);
|
||||
}
|
||||
}
|
||||
diff --git a/kernel/process.c b/kernel/process.c
|
||||
index b63dba69..7e1fce7c 100644
|
||||
--- a/kernel/process.c
|
||||
+++ b/kernel/process.c
|
||||
@@ -1558,7 +1558,7 @@ static int remap_one_page(void *arg0, page_table_t pt, pte_t *ptep,
|
||||
page = phys_to_page(phys);
|
||||
if (page && page_unmap(page)) {
|
||||
ihk_mc_free_pages_user(phys_to_virt(phys), pgsize/PAGE_SIZE);
|
||||
- dkprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys, __FUNCTION__, pgsize, pgsize);
|
||||
+ kprintf("%lx-,%s: calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys, __FUNCTION__, pgsize, pgsize);
|
||||
rusage_memory_stat_sub(args->memobj, pgsize, pgsize);
|
||||
}
|
||||
|
||||
@@ -2022,12 +2022,12 @@ retry:
|
||||
* (5) Reach here
|
||||
*/
|
||||
if (rusage_memory_stat_add(range, phys, pgsize, pgsize)) {
|
||||
- dkprintf("%lx+,%s: COW-source pointed-to by only fileobj, calling memory_stat_rss_add(),pgsize=%ld\n",
|
||||
+ kprintf("%lx+,%s: COW-source pointed-to by only fileobj, calling memory_stat_rss_add(),pgsize=%ld\n",
|
||||
phys, __FUNCTION__, pgsize);
|
||||
}
|
||||
if (page) {
|
||||
if (page_unmap(page)) {
|
||||
- dkprintf("%lx-,%s: cow,calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys, __FUNCTION__, pgsize, pgsize);
|
||||
+ kprintf("%lx-,%s: cow,calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", phys, __FUNCTION__, pgsize, pgsize);
|
||||
rusage_memory_stat_sub(range->memobj, pgsize, pgsize);
|
||||
}
|
||||
}
|
||||
@@ -2048,8 +2048,8 @@ retry:
|
||||
if (!(reason & PF_PATCH) &&
|
||||
rusage_memory_stat_add(range, phys, pgsize, pgsize)) {
|
||||
/* on-demand paging, phys pages are obtained by ihk_mc_alloc_aligned_pages_user() or get_page() */
|
||||
- dkprintf("%lx+,%s: (on-demand paging && first map) || cow,calling memory_stat_rss_add(),phys=%lx,pgsize=%ld\n",
|
||||
- phys, __FUNCTION__, phys, pgsize);
|
||||
+ kprintf("%lx+,%s: paging or cow,calling memory_stat_rss_add(),base=%lx,phys=%lx,pgsize=%ld\n",
|
||||
+ phys, __FUNCTION__, fault_addr, phys, pgsize);
|
||||
} else {
|
||||
dkprintf("%s: !calling memory_stat_rss_add(),phys=%lx,pgsize=%ld\n",
|
||||
__FUNCTION__, phys, pgsize);
|
||||
@@ -2087,7 +2087,7 @@ out:
|
||||
__FUNCTION__, page_to_phys(page),
|
||||
range->start, range->end, range->flag, fault_addr, reason);
|
||||
if (page_unmap(page)) {
|
||||
- dkprintf("%lx-,%s: out,calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", page_to_phys(page), __FUNCTION__, pgsize, pgsize);
|
||||
+ kprintf("%lx-,%s: out,calling memory_stat_rss_sub(),size=%ld,pgsize=%ld\n", page_to_phys(page), __FUNCTION__, pgsize, pgsize);
|
||||
rusage_memory_stat_sub(range->memobj, pgsize, pgsize);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user