On Aug 5, 2024, at 08:57, [email protected] wrote:
> On 05.08.2024 11:09, Mark Millard wrote:
>> On Aug 5, 2024, at 00:44, [email protected] wrote:
>>>> . . .
>>> Tegra has 4 Cortex-A15 cores and 2 GB of RAM.
>> OrangePi+ 2ed: Cortex-A7 with 4 cores and 2 GiBytes of RAM.
>> I wonder if the 2483 MiBytes would end up being about the
>> same on the Tegra variation indicated.
>
> Yep, it must be +/-same. The 2/2 GB for userland/kernel is defined by HW.
> Only size of shared libraries may affect (lower) usable user space for given
> program.
>>> All ports are built with default options. The only non-standard item is the
>>> swap size -> I have 16GB of swap on a swap partition on the SSD.
>> Wow, 16 GiBYtes of swap space for 2 GiBytes of RAM. I guess
>> when the swap is added that you get a notice-pair of the
>> structure:
>> QUOTE
>> warning: total configured swap (. . . pages) exceeds maximum recommended
>> amount (. . . pages).
>> warning: increase kern.maxswzone or reduce amount of swap.
>> END QUOTE
>> with a rather large difference between the two ". . ." figures.
>> Do you make other adjustments to deal with the otherwise-reported
>> potential mistuning? It appears to make tradeoffs in the kernel
>> internal memory handling, if I understand right.
> The above message should be interpreted as: warning, the kernel may in word,
> rear case need to allocate additional
> memory when swapping some object(memory) out. This may leads to
> deadlock/panic. But again, event is this warning valid,
> resulting deadlock/panic is very rare. I newer see it in past many years...
Interesting.
>>> But I guess that's not important in this case.
>> At least for my context, it appears that memory allocations
>> are failing to find a big enough free area inside the
>> process's address space --without running out of system
>> RAM+SWAP space overall.
>> For the OrangePi+ 2ed ( and devel/llvm18 18.1.7 ) it was
>> during the earlier linker run for:
>> FAILED: bin/lli-child-target
>> . . .
>> LLVM ERROR: out of memory
>> Allocation failed
>> That much finished just fine on the Windows DevKit
>> 2023 used via a armv7 jail ( devel/llvm18 18.1.8_1 ).
>> The failure point was in a later link ( matching what
>> I saw via devel/llvm19 ).
>>> I just started build of llvm19 - but it takes few hours to complete..
>> Probably fewer hours than on the OrangePi+ 2ed but
>> more than on the Windows DevKit 2023 (if they were
>> completing, anyway).
>
> The native build is still running (60% in fact), arm32 jail build has been
> stopped on my Honeycomb (killed by OOM).Unfortunately this is an old problem
> and is common on all platforms. The current LLVM cannot be built without
> additional tricks on machines that have less than 2GB (RAM + swap) per
> core.....
FYI: A small RAM+SWAP test for amd64-as-amd64 for devel/llvm18 18.1.7 . . .
USE_TMPFS=no
Targetting BE_NATIVE without BE_AMDGPU and without MLIR. Avoiding being
stripped.
(MLIR is resource and time expensive to build but I make no use of it.)
(I also make no use of BE_AMDGPU materials.)
(I've not been doing any cross builds in a very long time.)
(Not stripping can make for better failure reporting.)
(Leading whitespace might notn b e preserved in the copy of the diff:)
# git -C /usr/ports/ diff devel/llvm18
diff --git a/devel/llvm18/Makefile b/devel/llvm18/Makefile
index 1b1f759ba50e..779ddf3bea7e 100644
--- a/devel/llvm18/Makefile
+++ b/devel/llvm18/Makefile
@@ -87,7 +87,7 @@ CMAKE_ARGS+= -DLLVM_ENABLE_TERMINFO=OFF
CMAKE_ARGS+= -DLLVM_VERSION_SUFFIX=
OPTIONS_DEFINE= BE_AMDGPU BE_WASM CLANG COMPILER_RT DOCS LLD
STATIC_LIBS
-OPTIONS_DEFAULT= BE_AMDGPU BE_WASM CLANG LLD
+OPTIONS_DEFAULT= BE_WASM CLANG LLD
OPTIONS_SINGLE= BACKENDS
OPTIONS_SINGLE_BACKENDS=BE_FREEBSD BE_NATIVE BE_STANDARD
OPTIONS_EXCLUDE_armv6= COMPILER_RT
@@ -103,7 +103,7 @@ OPTIONS_DEFINE_powerpc= GOLD
OPTIONS_DEFINE_powerpc64= GOLD
OPTIONS_DEFINE_powerpc64le= GOLD
-OPTIONS_DEFAULT+= BE_STANDARD COMPILER_RT EXTRAS LIT LLDB MLIR OPENMP \
+OPTIONS_DEFAULT+= BE_NATIVE COMPILER_RT EXTRAS LIT LLDB OPENMP \
PYCLANG POLLY STATIC_LIBS
OPTIONS_DEFAULT_amd64= GOLD
OPTIONS_DEFAULT_powerpc= GOLD
@@ -211,8 +211,8 @@ CONFLICTS_INSTALL= ${PORTNAME}${LLVM_SUFFIX}
${PORTNAME}${LLVM_SUFFIX}-lite
.if defined(WITH_DEBUG)
CMAKE_BUILD_TYPE= RelWithDebInfo
-STRIP=
.endif
+STRIP=
PLIST_SUB+= LLVM_MAJOR_MINOR=${LLVM_MAJOR_MINOR} \
LLVM_MAJOR=${LLVM_MAJOR} \
@@ -224,10 +224,10 @@ FIRST_COMMAND= ${COMMANDS:C/^/XXXX/1:MXXXX*:C/^XXXX//}
MAN1SRCS+= ${LLVM_MAN1SRCS}
-STRIP_LIBS= BugpointPasses.so \
- LLVMHello.so \
- ${LIBNAME}.0 \
- libLTO.so
+#STRIP_LIBS= BugpointPasses.so \
+# LLVMHello.so \
+# ${LIBNAME}.0 \
+# libLTO.so
EXTRAS_LIBS= \
libclangApplyReplacements \
Note: This amd64 testing is not using --threads=1 for linking.
A Hyper-V context for amd64-as-amd64 set up for small memory testing with 4
Hyper-V cores:
real memory = 2147483648 (2048 MB)
avail memory = 2029309952 (1935 MB)
Swap: 3584Mi Total
So: AVAIL_RAM+SWAP == 5519 MiBytes
Building just llvm18-18.1.7 :
[00:00:22] [01] [00:00:00] Building devel/llvm18@default | llvm18-18.1.7
[00:55:27] [01] [00:55:05] Finished devel/llvm18@default | llvm18-18.1.7:
Success ending TMPFS: 0.00 GiB
(My poudriere-devel is patched to report the ending TMPFS figures.)
From my patched-up top's output from monitoring during the build:
Mem: . . . , 1462Mi MaxObsActive, 582432Ki MaxObsWired, 1940Mi
MaxObs(Act+Wir+Lndry)
Swap: 3584Mi Total , . . . , 1090Mi MaxObsUsed, 2455Mi
MaxObs(Act+Lndry+SwapUsed), 2995Mi MaxObs(A+Wir+L+SU),
2996Mi (A+W+L+SU+InAct)
So, slightly under 3 GiBytes RAM+SWAP observed as used, well under 8 GiBytes.
3GiByte[RAM+SWAP]/4Core == 0.75 GiByte[RAM+SWAP]/Core, well under 2
GiByte[RAM+SWAP]/Core.
From this and the like of your OOM reporting, I get an idea how much MLIR,
BE_AMDGPU, and BE_STANDARD contribute to the RAM+SWAP use. (I've not tested
such directly in a long time.)
For reference:
# uname -apKU
FreeBSD 7950X3D-UFS 15.0-CURRENT FreeBSD 15.0-CURRENT #144
main-n271413-1f7df7570174-dirty: Sat Jul 27 16:01:52 UTC 2024
root@7950X3D-ZFS:/usr/obj/BUILDs/main-amd64-nodbg-clang/usr/main-src/amd64.amd64/sys/GENERIC-NODBG
amd64 amd64 1500021 1500021
# ~/fbsd-based-on-what-commit.sh -C /usr/main-src
1f7df7570174 (HEAD -> main, freebsd/main, freebsd/HEAD) LinuxKPI: move
__kmalloc from slab.h to slab.c
Author: Bjoern A. Zeeb <[email protected]>
Commit: Bjoern A. Zeeb <[email protected]>
CommitDate: 2024-07-26 11:51:04 +0000
branch: main
merge-base: 1f7df757017404011732196e65981d9325f7a89f
merge-base: CommitDate: 2024-07-26 11:51:04 +0000
n271413 (--first-parent --count for merge-base)
# ~/fbsd-based-on-what-commit.sh -C /usr/ports
4e0616a2066d (HEAD -> main, freebsd/main, freebsd/HEAD) graphics/libavif: drop
maintainership
Author: Jan Beich <[email protected]>
Commit: Jan Beich <[email protected]>
CommitDate: 2024-07-13 01:31:18 +0000
branch: main
merge-base: 4e0616a2066dc9e45cef47de812efdea4e09709c
merge-base: CommitDate: 2024-07-13 01:31:18 +0000
n671165 (--first-parent --count for merge-base)
Note: This /usr/ports/ is from before devel/llvm19 or /devel/freebsd-gcc14 .
I've not synchronized this UFS environment with my experimention with a more
recent ports vintage. devel/llvm18 is at 18.1.7 still here.
Hyper-V is actually using the same UFS boot media as the native UFS FreeBSD
boot does --but is using a smaller swap partition.
===
Mark Millard
marklmi at yahoo.com