On 2021-Jan-18, at 21:12, Mark Millard <marklmi at yahoo.com> wrote: > On 2021-Jan-18, at 19:19, Mark Millard <marklmi at yahoo.com> wrote: > >> . . . >>> FYI: I re-established my access to a RPi2B V1.1 and made >>> it report: "maximum recommended amount (468832 pages)" >>> >>> (The figure can vary some from release to release.) >>> >>> 468832*4096 == 1920335872 or a little over 1831 MiBytes >>> >>> For the 4096 Byte pages, that means that the following from >>> gpart fits without complaint (size is in blocks, not pages): >>> >>> 413140992 3686400 da0p2 freebsd-swap (1.8G) >>> >>> 3686400*512 is a little over 1.75 GiByte or 1800 MiByte. So >>> I've left some room below 1831 MiBytes, but not a lot. >>> >>> FYI about my build experiment that is running: >>> >>> # sysctl hw.physmem >>> hw.physmem: 979042304 >>> >>> which, in recent times for armv7, I can (and did) set in >>> /boot/loader.conf on a faster cortex-A7 SBC (that can boot >>> the same media but has more RAM). >>> >>> So I tried a -j4 build, but with LDFLAGS.lld+= -Wl,--threads=1 >>> in use and my other particular src.conf/make.conf like content >>> (so the builds do likely differ from yours in various ways). >>> My build is producing a non-debug build (but with -g symbols). >>> Somewhat after where your buildworld.log stops, my odd variant >>> of top was reporting: >>> >>> Mem: . . . , 753672Ki MaxObsActive, 200412Ki MaxObsWired, 892732Ki MaxObs(Act+Wir) >>> Swap: . . . , 145832Ki MaxObsUsed >>> >>> and top was also showing lots of processes as having "0B" RES >>> in STATE "wait" or "nanslp" (so, apparently swapped out, not paging). >>> ("MaxObs" is short for "maximum observed".) >>> >>> For comparison, your swapscript.log reported a maximum total of >>> 346192 KiBytes "Used" for swap, about 98% into the log file. >>> >>> (Time goes by . . .) >>> >>> It finished with building libllvm and is part way into building >>> libclang. This is probably well past where your hangup happened, >>> given that your published buildworldlog file stopped with >>> libllvm's Target/ARM/ARMMCInstLower.o . My odd top now shows: >>> >>> Mem: . . . , 753672Ki MaxObsActive, 200412Ki MaxObsWired, 892732Ki MaxObs(Act+Wir) >>> Swap: . . . , 392328Ki MaxObsUsed >>> >>> The build continues to run. I'll let you know how it goes. >>> . . . >> >> Just after libclang finished my odd top showed: >> >> Mem: . . . , 753672Ki MaxObsActive, 200412Ki MaxObsWired, 892736Ki MaxObs(Act+Wir) >> Swap: . . . , 537588Ki MaxObsUsed >> >> After liblldb: >> >> Mem: . . . , 753672Ki MaxObsActive, 200412Ki MaxObsWired, 899276Ki MaxObs(Act+Wir) >> Swap: . . . , 537588Ki MaxObsUsed >> >> Much later, after the lldb program had been built: >> >> Mem: . . . , 765700Ki MaxObsActive, 200412Ki MaxObsWired, 954116Ki MaxObs(Act+Wir) >> Swap: . . . , 537588Ki MaxObsUsed >> >>>>> World build completed on Mon Jan 18 19:10:08 PST 2021 >>>>> World built in 72960 seconds, ncpu: 4, make -j4 >> >> This was building from scratch what was already installed: >> >> # ~/fbsd-based-on-what-freebsd-main.sh >> merge-base: 818390ce0ca539300dd15d7a817784f1e3f7a9b8 >> merge-base: CommitDate: 2021-01-13 21:27:44 +0000 >> 4180404713ec (HEAD -> mm-src) mm-src snapshot for mm's patched build in git context. >> 818390ce0ca5 (freebsd/main, freebsd/HEAD, pure-src, main) arm64: fix early devmap assertion >> FreeBSD OPiP2E_RPi2v11 13.0-CURRENT FreeBSD 13.0-CURRENT mm-src-c255938-g4180404713ec GENERIC-NODBG arm armv7 1300135 1300135 >> >> This suggests that you should be able to build on the RPi2B v1.1, >> using -j4, with appropriate configuration for what and how to build. >> >> >> It is now building the matching kernel, my GENERIC-NODBG style. > > Done: > >>>> Kernel build for GENERIC-NODBG completed on Mon Jan 18 20:33:26 PST 2021 >>>> Kernel(s) GENERIC-NODBG built in 4998 seconds, ncpu: 4, make -j4 > > So, World+Kernel in somewhat under 22 hours. > > The "MaxObs*" figures were unchanged, so: > > Mem: . . . , 765700Ki MaxObsActive, 200412Ki MaxObsWired, 954116Ki MaxObs(Act+Wir) > Swap: . . . , 537588Ki MaxObsUsed > > This suggests that, for now, 800 MiByte of swap would be something > more than 1.5 times what it actually used and 1050 MiBytes would > be something like 2.0 times what it actually used, so leaving some > notable margin for variations in peek usage, at least when linker > threading is avoided. > > > > As for what I used to control "what and how to build" . . . > > # more ~/sys_build_scripts.armv7-host/make_armv7_nodebug_clang_bootstrap-armv7-host.sh > kldload -n filemon && \ > script ~/sys_typescripts/typescript_make_armv7_nodebug_clang_bootstrap-armv7-host-$(date +%Y-%m-%d:%H:%M:%S) \ > env __MAKE_CONF="/root/src.configs/make.conf" SRCCONF="/dev/null" SRC_ENV_CONF="/root/src.configs/src.conf.armv7-clang-bootstrap.armv7-host" \ > WITH_META_MODE=yes \ > WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x42000000" \ > MAKEOBJDIRPREFIX="/usr/obj/armv7_clang/arm.armv7" \ > make $* > > (In my context, UBLDR_LOADADDR is ignored by anything that > can not use the figure given. So I've no bothered to be > more selective about having it in the armv7 builds.) > > # more ~/src.configs/make.conf > LDFLAGS.lld+= -Wl,--threads=1 > > # more ~/src.configs/src.conf.armv7-clang-bootstrap.armv7-host > TO_TYPE=armv7 > # > KERNCONF=GENERIC-NODBG > TARGET=arm > .if ${.MAKE.LEVEL} == 0 > TARGET_ARCH=${TO_TYPE} > .export TARGET_ARCH > .endif > # > #WITH_CROSS_COMPILER= > WITH_SYSTEM_COMPILER= > WITH_SYSTEM_LINKER= > # > WITH_LIBCPLUSPLUS= > WITHOUT_BINUTILS_BOOTSTRAP= > WITH_ELFTOOLCHAIN_BOOTSTRAP= > #Disables avoiding bootstrap: WITHOUT_LLVM_TARGET_ALL= > WITHOUT_LLVM_TARGET_AARCH64= > WITH_LLVM_TARGET_ARM= > WITHOUT_LLVM_TARGET_MIPS= > WITHOUT_LLVM_TARGET_POWERPC= > WITHOUT_LLVM_TARGET_RISCV= > WITHOUT_LLVM_TARGET_X86= > WITH_CLANG= > WITH_CLANG_IS_CC= > WITH_CLANG_FULL= > WITH_CLANG_EXTRAS= > WITH_LLD= > WITH_LLD_IS_LD= > WITHOUT_BINUTILS= > # > WITH_LLDB= > # > WITH_BOOT= > WITHOUT_LIB32= > # > # > WITHOUT_WERROR= > #WERROR= > MALLOC_PRODUCTION= > WITH_MALLOC_PRODUCTION= > WITHOUT_ASSERT_DEBUG= > WITHOUT_LLVM_ASSERTIONS= > # > # Avoid stripping but do not control host -g status as well: > DEBUG_FLAGS+= > # > WITH_REPRODUCIBLE_BUILD= > WITH_DEBUG_FILES= > # > # Use of the .clang 's here avoids > # interfering with other C<?>FLAGS > # usage, such as ?= usage. > CFLAGS.clang+= -mcpu=cortex-a7 > CXXFLAGS.clang+= -mcpu=cortex-a7 > CPPFLAGS.clang+= -mcpu=cortex-a7 > > (I do not claim that you would want WITH_REPRODUCIBLE_BUILD . > I just happen to have been experimenting with it. You might > not want to be explicit about the cpu to target. You might > not want WITH_CLANG_EXTRAS .) > > # more /usr/fbsd/mm-src/sys/arm/conf/GENERIC-NODBG > include "GENERIC" > > ident GENERIC-NODBG > > makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols > > options AUDIT # Not enabled by default in armv7/v6 kernels > # Enabled here to allow kyua test runs to > # possibly report auditing works. > > options ALT_BREAK_TO_DEBUGGER > > options KDB # Enable kernel debugger support > > # For minimum debugger support (stable branch) use: > options KDB_TRACE # Print a stack trace for a panic > options DDB # Enable the kernel debugger > > # Extra stuff: > #options VERBOSE_SYSINIT=0 # Enable verbose sysinit messages > #options BOOTVERBOSE=1 > #options BOOTHOWTO=RB_VERBOSE > options ALT_BREAK_TO_DEBUGGER # Enter debugger on keyboard escape sequence > options KLD_DEBUG > #options KTR > #options KTR_MASK=KTR_TRAP > ##options KTR_CPUMASK=0xF > #options KTR_VERBOSE > > # Disable any extra checking for. . . > nooptions INVARIANTS # Enable calls of extra sanity checking > nooptions INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS > nooptions WITNESS # Enable checks to detect deadlocks and cycles > nooptions WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed > nooptions DEADLKRES # Enable the deadlock resolver > nooptions MALLOC_DEBUG_MAXZONES # Separate malloc(9) zones > nooptions DIAGNOSTIC > nooptions BUF_TRACKING > nooptions FULL_BUF_TRACKING > nooptions USB_DEBUG > nooptions USB_REQ_DEBUG > nooptions USB_VERBOSE > > The /boot/loader.conf file and the /etc/sysctl.conf files > both contained: > > vm.pageout_oom_seq=120 > vm.pfault_oom_attempts=-1 > > (The hw.physmem=979042304 in /boot/loader.conf was very-special, > to better approximate your environment. I also controlled the > cpu frequency used via a line in /etc/sysctl.conf . I do not > bother with such non-default frequency usage [or related settings] > for RPi*'s with the pre-RPi4B style power connections but do > control the frequency for the OPi+2E.) The following had been left implicit about my context and how it manages memory space use. I'll note that I do not use tmpfs or other such memory based file system techniques that could compete for RAM/swap. What is in use for the only file system involved is just the root file system: # df -m Filesystem 1M-blocks Used Avail Capacity Mounted on /dev/gpt/BPIM3root 195378 63940 115808 36% / devfs 0 0 0 100% /dev It is a USB SSD. The swap partition is also on that same media. (The BPIM3 based name dates back to before the BPI-M3 power connection failed and I switched to the OPi+2E.) I'll note that I've started a new from-scratch build without LDFLAGS.lld+= -Wl,--threads=1 . So at some point I'll have information about how much of a difference (+/-) in swap usage it actually made for with vs. without, if any. === Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)Received on Wed Jan 20 2021 - 00:42:28 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:26 UTC