Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 106029
b: refs/heads/master
c: 873b477
h: refs/heads/master
i:
  106027: b1a7335
v: v3
  • Loading branch information
Keika Kobayashi authored and Linus Torvalds committed Jul 25, 2008
1 parent f6814e6 commit 62707ef
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3e85ba034deec351f02cb55ff225bbd616463841
refs/heads/master: 873b47717732c2f33a4b14de02571a4295a02f0c
19 changes: 19 additions & 0 deletions trunk/include/linux/delayacct.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ extern void __delayacct_blkio_start(void);
extern void __delayacct_blkio_end(void);
extern int __delayacct_add_tsk(struct taskstats *, struct task_struct *);
extern __u64 __delayacct_blkio_ticks(struct task_struct *);
extern void __delayacct_freepages_start(void);
extern void __delayacct_freepages_end(void);

static inline int delayacct_is_task_waiting_on_io(struct task_struct *p)
{
Expand Down Expand Up @@ -107,6 +109,18 @@ static inline __u64 delayacct_blkio_ticks(struct task_struct *tsk)
return 0;
}

static inline void delayacct_freepages_start(void)
{
if (current->delays)
__delayacct_freepages_start();
}

static inline void delayacct_freepages_end(void)
{
if (current->delays)
__delayacct_freepages_end();
}

#else
static inline void delayacct_set_flag(int flag)
{}
Expand All @@ -129,6 +143,11 @@ static inline __u64 delayacct_blkio_ticks(struct task_struct *tsk)
{ return 0; }
static inline int delayacct_is_task_waiting_on_io(struct task_struct *p)
{ return 0; }
static inline void delayacct_freepages_start(void)
{}
static inline void delayacct_freepages_end(void)
{}

#endif /* CONFIG_TASK_DELAY_ACCT */

#endif
4 changes: 4 additions & 0 deletions trunk/include/linux/sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,10 @@ struct task_delay_info {
/* io operations performed */
u32 swapin_count; /* total count of the number of swapin block */
/* io operations performed */

struct timespec freepages_start, freepages_end;
u64 freepages_delay; /* wait for memory reclaim */
u32 freepages_count; /* total count of memory reclaim */
};
#endif /* CONFIG_TASK_DELAY_ACCT */

Expand Down
13 changes: 13 additions & 0 deletions trunk/kernel/delayacct.c
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,16 @@ __u64 __delayacct_blkio_ticks(struct task_struct *tsk)
return ret;
}

void __delayacct_freepages_start(void)
{
delayacct_start(&current->delays->freepages_start);
}

void __delayacct_freepages_end(void)
{
delayacct_end(&current->delays->freepages_start,
&current->delays->freepages_end,
&current->delays->freepages_delay,
&current->delays->freepages_count);
}

5 changes: 5 additions & 0 deletions trunk/mm/vmscan.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
#include <linux/kthread.h>
#include <linux/freezer.h>
#include <linux/memcontrol.h>
#include <linux/delayacct.h>

#include <asm/tlbflush.h>
#include <asm/div64.h>
Expand Down Expand Up @@ -1316,6 +1317,8 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
struct zone *zone;
enum zone_type high_zoneidx = gfp_zone(sc->gfp_mask);

delayacct_freepages_start();

if (scan_global_lru(sc))
count_vm_event(ALLOCSTALL);
/*
Expand Down Expand Up @@ -1396,6 +1399,8 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
} else
mem_cgroup_record_reclaim_priority(sc->mem_cgroup, priority);

delayacct_freepages_end();

return ret;
}

Expand Down

0 comments on commit 62707ef

Please sign in to comment.