Messages in this thread | | | Date | Fri, 21 Jan 2005 11:30:28 +0100 | From | Pavel Machek <> | Subject | Re: [PATCH][RFC] swsusp: speed up image restoring on x86-64 |
| |
Hi!
> Full patch still can get from > http://soulinfo.com/~hugang/swsusp/2005-1-21/
From a short look:
core.eatmem.diff of course helps, but is wrong. You should talk to akpm to find out why shrink_all_memory is not doing its job.
i386: + repz movsl %ds:(%esi),%es:(%edi) I do not think movsl has any parameters. What is repz? Repeat as long as it is non-zero? I think this should be "rep movsl".
core: @@ -576,92 +989,31 @@ static void copy_data_pages(void) for (zone_pfn = 0; zone_pfn < zone->spanned_pages; ++zone_pfn) { if (saveable(zone, &zone_pfn)) { struct page * page; + pbe = find_pbe_by_index(pagedir_nosave, nr_copy_pages-to_copy); + BUG_ON(pbe == NULL); page = pfn_to_page(zone_pfn + zone->zone_start_pfn);
Don't you introduce O(n^2) behaviour here? Should not it be something like pbe_next? And it is the only user of find_pbe_by_index().
I think that read_one_pbe() is too short to be uninlined... Same for read_one_pagedir and write_one_pbe().
alloc_one_pagedir: why not just alloc page as zeroed?
Okay, it is still too big to merge directly. Would it be possible to get mod_printk_progress(), introduce *_for_each (but leave there old implementations), introduce pagedir_free() (but leave old implementation). Better collision code should already be there, that should make patch smaller, too. Try not to move code around.
That may be mergeable before 2.6.11... Pavel -- People were complaining that M$ turns users into beta-testers... ...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl! - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |