Hello,

On 28/06/24 20:01, Nishant Sharma wrote:
On 28/06/24 19:44, Alex Rousskov wrote:
I do not know the answer to your question. SMP performance penalties are often smaller for smaller cache sizes, but cache size is not the only performance-affecting locking-sensitive parameter, so YMMV.

I was able to compile after commenting the specific line of code. Squid workers start and I am able to bind them to specific CPU cores.

I had reported the issue to Openwrt project as well and I understood that in order to save space, squid was being compiled for mips16 instead of mips32.

Even after compiling it for mips32 (by adding a flag for the build system), the error is still occuring as in the code in `ipc/mem/PageStack.h` `uint64_t` is specified.

I was able to compile by replacing `uint64_t` to `uint32_t` and squid worked with workers > 1.

Further discussion on Openwrt issue tracker suggested [1] the following:

<quote>
The posix definition is that lock ID is native integer. It should be some conditional in ./configure style portability of squid to run on (most) 32bit platforms.
</quote>

Is there any change that we need to do in the configure script to check for the availability of 64 bit atomic lock and use 32 bit lock if not available?

Or may be document the fact that it is not advisable / possible to run squid in SMP mode on such platforms that are not able to provide 64 bit lock ID.

I tried to go through config.log and could see the following messages which might or might not be related to this:

<config.log>
...
...
...

configure:46036: checking for uint64_t
configure:46036: $? = 0
configure:46036: result: yes

AND

configure:46027: checking for int64_t

configure:46027: mipsel-openwrt-linux-musl-g++ -std=c++17 -c -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/target-mipsel_24kc_musl/usr/include -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/target-mipsel_24kc_musl/usr/include -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -msoft-float -fmacro-prefix-map=/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/build_dir/target-mipsel_24kc_musl/squid-6.10=squid-6.10 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -Wno-error -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/target-mipsel_24kc_musl/usr/include -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/target-mipsel_24kc_musl/usr/include/libxml2 -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/usr/include -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/include/fortify -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/include conftest.cpp >&5
configure:46027: $? = 0

configure:46027: mipsel-openwrt-linux-musl-g++ -std=c++17 -c -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/target-mipsel_24kc_musl/usr/include -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/target-mipsel_24kc_musl/usr/include -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -msoft-float -fmacro-prefix-map=/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/build_dir/target-mipsel_24kc_musl/squid-6.10=squid-6.10 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -Wno-error -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/target-mipsel_24kc_musl/usr/include -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/target-mipsel_24kc_musl/usr/include/libxml2 -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/usr/include -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/include/fortify -I/home/devuser/openwrt-23.05/arthur/mt7621/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/include conftest.cpp >&5

conftest.cpp: In function 'int main()':
conftest.cpp:324:67: warning: integer overflow in expression of type 'int64_t' {aka 'long long int'} results in '-9223372036854775808' [-Woverflow] 324 | < (int64_t) (((((int64_t) 1 << N) << N) - 1) * 2 + 2))]; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
conftest.cpp:323:26: error: size '-1' of array 'test_array' is negative
323 | static int test_array [1 - 2 * !((int64_t) (((((int64_t) 1 << N) << N) - 1) * 2 + 1) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 324 | < (int64_t) (((((int64_t) 1 << N) << N) - 1) * 2 + 2))]; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
configure:46027: $? = 1

configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Squid Web Proxy"
| #define PACKAGE_TARNAME "squid"
| #define PACKAGE_VERSION "6.10"
| #define PACKAGE_STRING "Squid Web Proxy 6.10"
| #define PACKAGE_BUGREPORT "https://bugs.squid-cache.org/";
| #define PACKAGE_URL ""
...
...
...
...
</config.log>

Regards,
Nishant

* [1] https://github.com/openwrt/packages/issues/24469#issuecomment-2203033868
_______________________________________________
squid-users mailing list
squid-users@lists.squid-cache.org
https://lists.squid-cache.org/listinfo/squid-users

Reply via email to