Date: Mon, 12 Jan 2015 00:27:18 -0500 From: Allan Jude <allanjude@freebsd.org> To: freebsd-hackers@freebsd.org Subject: Re: [PATCH] Display progress during getmemsize() so the kernel doesn't look like it hanged Message-ID: <54B35B36.4040504@freebsd.org> In-Reply-To: <D0D89A8E.129518%rpokala@panasas.com> References: <D0D89A8E.129518%rpokala@panasas.com>
next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --ULFWqxnx12mCOCA5xt46Ojt8mPgQE16oE Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable On 2015-01-12 00:24, Pokala, Ravi wrote: > Hi folks, >=20 > Several of us have noticed that there's a long pause at the start of > booting the kernel on amd64 systems with large amounts of RAM. During t= his > pause, the kernel is mapping in the memory ranges, but does not emit an= y > progress indicators. Because this can take quite a while, it can look l= ike > the kernel has hung. I filed PR 196650 about this issue; this patch jus= t > prints out a dot for every GB that's mapped in. We've been using this > patch for years at Panasas, and I'm hoping someone can submit it for me= =2E >=20 > Thanks, >=20 > Ravi >=20 >=20 > Index: sys/amd64/amd64/machdep.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- sys/amd64/amd64/machdep.c (revision 276903) > +++ sys/amd64/amd64/machdep.c (working copy) > @@ -1575,6 +1575,9 @@ > u_long physmem_start, physmem_tunable, memtest; > pt_entry_t *pte; > quad_t dcons_addr, dcons_size; > + u_int32_t page_counter; > + int PAGES_PER_MB =3D ((1024 * 1024) / PAGE_SIZE); > + int PAGES_PER_GB =3D (PAGES_PER_MB * 1024); > =20 > bzero(physmap, sizeof(physmap)); > basemem =3D 0; > @@ -1678,6 +1681,8 @@ > * physmap is in bytes, so when converting to page boundaries, > * round up the start address and round down the end address. > */ > + printf("Mapping system memory"); > + page_counter =3D 0; > for (i =3D 0; i <=3D physmap_idx; i +=3D 2) { > vm_paddr_t end; > =20 > @@ -1688,6 +1693,14 @@ > int tmp, page_bad, full; > int *ptr =3D (int *)CADDR1; > =20 > + /* > + * Print a "." every GB, to show we're making progress > + */ > + page_counter++; > + if ((page_counter % PAGES_PER_GB) =3D=3D 0) { > + printf("."); > + } > + > full =3D FALSE; > /* > * block out kernel memory as not available. > @@ -1792,6 +1805,9 @@ > break; > } > } > + printf("\nMapped %d GB + %d MB total\n", > + (page_counter / PAGES_PER_GB), > + ((page_counter % PAGES_PER_GB) / PAGES_PER_MB)); > *pte =3D 0; > invltlb(); > =20 >=20 >=20 > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.o= rg" >=20 Which version(s) of FreeBSD were you seeing this delay on? I know older versions had it, quite badly. setting hw.memtest.tests=3D0 in /boot/loader.conf makes most of the delay= go away, and the default on -CURRENT is now 0 instead of 1. IIRC, in 10, it defaults to 1, but is switched to 0 in the case of virtual machines, because touching every page of memory ruined memory over-commit type features. Is this feature still useful with memtest.tests=3D0? --=20 Allan Jude --ULFWqxnx12mCOCA5xt46Ojt8mPgQE16oE Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (MingW32) iQIcBAEBAgAGBQJUs1s7AAoJEJrBFpNRJZKfXCAP/jzLD28j26Af1RnPN8UdyZHg BOoB2CEhuq6h7VLUl+8Ec6mJ6+JgCJYeBiuVPj6h5VGjec/jVwH2S2CVuGzOYJy5 FfzjBZnRShTEVFqN9ySZRgg1q1R7HxHEm/e27Z8EDLLvqPUfqp2rg1s3QW48lDcS /psZj/LiIMplltpXw4GBSIiaJeDamHLJAfy1FN2edcMl1vh2qZkhSqO9tvwVPP3S UcjUNwftDw03cKrA6+76M50RCqfI0nwjg6+M3inahbWQH/dqzi1gNFm1N3F69paY +2M5QYqUSD7r68yzhEFASZR4D/uuv95mdHNGCiINUBTtQYzLZmsRgIs7E1bN0r6D kYNSuAbNTdc/gLOieaSjPevEs0R0aLEqM14Yb//76mljEytvi8NUYYjuxtnpwm3o TAL2cxiPAJ/z8wob5VzPL8sva+2aoWPqeHfpH6/LDrCBw1xRkeNFIUKoYmxlBjyG 2mg4+C2TdkWbBrTVaK7v5+W8hDY7gOMSPP+EuBi3F/ez6OodNpwZHGRIKhIFeqsb V0g40P6dL5Zg228wIBpBK+p3wcSzeTSh44VKQaRlt1ju6YeGgeNB1qFagL7kRj3K qfforsPsp0NZoKTHMQC1No5OEBRenXjpIJS56c6CL2DLH7qCa1zwre6En3yof90n DzlleLrOezbK1gmWSoy8 =teXD -----END PGP SIGNATURE----- --ULFWqxnx12mCOCA5xt46Ojt8mPgQE16oE--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54B35B36.4040504>