shrink_caches()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




 I was going thru the code of shrink_caches(). it returns the difference
between the number of pages requested to be freed and the number of pages
that were actually freed. What i see over here is that the nr_pages which
is the return value, is decremented only when the pages are freed from
slab
cache and page cache. The value is not decremented when the pages get
freed from dentry cache, inode cache or the quota cache, which are freed
at high memory pressure times. So when no pages get freed from page cache,
but get freed from dentry/inode caches we will be returning a value which
says that no pages were freed. Why is this done? can you PLEASE explain
me this


559 static int FASTCALL(shrink_caches(zone_t * classzone, int
priority, unsigned int gfp_mask, int nr_pages));
560 static int shrink_caches(zone_t* classzone, int priority, unsigned int gfp_mask, int nr_pages)
561 {
562 int chunk_size = nr_pages;
563 unsigned long ratio;
564
565 nr_pages -= kmem_cache_reap(gfp_mask);
566 if (nr_pages <= 0)
567 return 0;
568
569
nr_pages = chunk_size;
570 /* try to keep the active list 2/3 of the size of the cache */
571 ratio = (unsigned long) nr_pages * nr_active_pages /((nr_inactive_pages + 1) * 2);
572 refill_inactive(ratio);
573
574 nr_pages = shrink_cache(nr_pages, classzone, gfp_mask, priority);
575 if(nr_pages <= 0)
576 return 0;
577
578 shrink_dcache_memory(priority,
gfp_mask);
579 shrink_icache_memory(priority, gfp_mask);
580 #ifdef CONFIG_QUOTA
581 shrink_dqcache_memory(DEF_PRIORITY, gfp_mask);
582 #endif
583
584 return nr_pages;
585 }


  thanks ,
Raghu
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux