Re: [PATCH] thp: do not adjust zone water marks if khugepaged is not started

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

 



On Fri, 27 Mar 2015 13:39:38 +0200 "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> wrote:

> set_recommended_min_free_kbytes() adjusts zone water marks to be suitable
> for khugepaged. We avoid doing this if khugepaged is disabled, but don't
> catch the case when khugepaged is failed to start.
> 
> Let's address this by checking khugepaged_thread instead of
> khugepaged_enabled() in set_recommended_min_free_kbytes().
> It's NULL if the kernel thread is stopped or failed to start.
>

hm, why didn't khugepaged start up?  Is this a theoretical
by-code-inspection thing or has the problem been observed in real life?

> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -110,7 +110,8 @@ static int set_recommended_min_free_kbytes(void)
>  	int nr_zones = 0;
>  	unsigned long recommended_min;
>  
> -	if (!khugepaged_enabled())
> +	/* khugepaged thread has stopped to failed to start */
> +	if (!khugepaged_thread)
>  		return 0;
>  
>  	for_each_populated_zone(zone)

Fair enough, but take a look at start_khugepaged():

: static int start_khugepaged(void)
: {
: 	int err = 0;
: 	if (khugepaged_enabled()) {
: 		if (!khugepaged_thread)
: 			khugepaged_thread = kthread_run(khugepaged, NULL,
: 							"khugepaged");
: 		if (unlikely(IS_ERR(khugepaged_thread))) {
: 			pr_err("khugepaged: kthread_run(khugepaged) failed\n");
: 			err = PTR_ERR(khugepaged_thread);
: 			khugepaged_thread = NULL;

-->> stop here 

: 		}
: 
: 		if (!list_empty(&khugepaged_scan.mm_head))
: 			wake_up_interruptible(&khugepaged_wait);
: 
: 		set_recommended_min_free_kbytes();
: 	} else if (khugepaged_thread) {
: 		kthread_stop(khugepaged_thread);
: 		khugepaged_thread = NULL;
: 	}
: 
: 	return err;
: }

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]