vhive-serverless / vSwarm-u

Framework that integrates the serverless benchmark suite vSwarm with gem5, the state-of-the-art research platform for system-and microarchitecture.
https://vhive-serverless.github.io/vSwarm-u/
MIT License
28 stars 4 forks source link

Compatibility Issue of the Host and the VM #67

Closed xkf15 closed 1 year ago

xkf15 commented 2 years ago

Hi, I am delighted that I have successfully deployed your infrastructure and run a simple simulation but I found a compatibility issue for the test-client executable. I deployed the whole project onto a Ubuntu 22.04.1 LTS machine, with kernel version 5.15.0-47-generic, and Glibc version 2.35. I compiled all the codes on my host machine and ran the simulation under the provided disk image. It failed due to a higher Glibc version requirement for test-client in the provided VM (the provided image has Glibc version 2.31).

For now, I manually compile test-client on an older version of kernel and Glibc, then upload it to the VM for simulation. It solves the problem but I believe it's better to compile all the codes in the VM during setup. (I guess you want to keep a cleaner VM so it does not even have a go compiler.)

I think this will make it easier to use.

Best, Kaifeng

dhschall commented 1 year ago

Hi Kaifeng, Thanks for letting me know! First of all I have to say that I did not test everything with the 22.04.1 version. Therefore I didn't advertise it as a feature. It was rather a request from one user and I could not test everything properly yet.

But this is good to know that it works except for this. Can you maybe send the log files of the error? Then I might be able to fix it.

Thanks again!

ustiugov commented 1 year ago

@xkf15 thanks for reporting! we would welcome your contribution! it would be great if you could help us support Ubuntu 22

xkf15 commented 1 year ago

Hi Kaifeng, Thanks for letting me know! First of all I have to say that I did not test everything with the 22.04.1 version. Therefore I didn't advertise it as a feature. It was rather a request from one user and I could not test everything properly yet.

But this is good to know that it works except for this. Can you maybe send the log files of the error? Then I might be able to fix it.

Thanks again!

Hi David, Here is the full install.log, the errors are related to the Glibc version. I think the issue is that in my host Ubuntu22 machine, the Glibc version is 2.35, but in the VM, it has a lower version, so it says "`GLIBC_2.34' not found". I am not sure what's the best way to fix it, I guess compiling the codes in the VM may help.

Best, Kaifeng

+ curl http://10.0.2.2:3003/test-client -f -o /root/test-client
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 12.3M  100 12.3M    0     0   427M      0 --:--:-- --:--:-- --:--:--  427M
+ chmod 755 /root/test-client
+ curl http://10.0.2.2:3003/functions.yaml -f -o /root/functions.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  3312  100  3312    0     0  3234k      0 --:--:-- --:--:-- --:--:-- 3234k
+ curl http://10.0.2.2:3003/functions.list -f -o /root/functions.list
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    48  100    48    0     0  48000      0 --:--:-- --:--:-- --:--:-- 48000
++ cat /root/functions.list
++ sed '/^\s*#/d;/^\s*$/d'
+ FUNCTIONS='fibonacci-go
fibonacci-nodejs
fibonacci-python'
+ for f in $FUNCTIONS
+ pull_test_function fibonacci-go
+ FUNCTION_NAME=fibonacci-go
+ echo 'Install and test: fibonacci-go '
Install and test: fibonacci-go 
+ docker-compose -f /root/functions.yaml pull fibonacci-go
fibonacci-go Pulling 
4c3010804819 Pulling fs layer 
376031597b2f Pulling fs layer 
b82becefddd5 Pulling fs layer 
4c3010804819 Downloading      99B/99B
4c3010804819 Verifying Checksum 
4c3010804819 Download complete 
4c3010804819 Extracting      99B/99B
4c3010804819 Extracting      99B/99B
4c3010804819 Pull complete 
376031597b2f Downloading  2.137kB/115.2kB
376031597b2f Verifying Checksum 
376031597b2f Extracting  32.77kB/115.2kB
376031597b2f Extracting  115.2kB/115.2kB
b82becefddd5 Downloading   78.9kB/7.676MB
b82becefddd5 Downloading  2.122MB/7.676MB
b82becefddd5 Downloading  4.273MB/7.676MB
b82becefddd5 Downloading  6.738MB/7.676MB
b82becefddd5 Verifying Checksum 
b82becefddd5 Download complete 
376031597b2f Pull complete 
b82becefddd5 Extracting   98.3kB/7.676MB
b82becefddd5 Extracting  7.676MB/7.676MB
b82becefddd5 Pull complete 
fibonacci-go Pulled 
+ docker-compose -f /root/functions.yaml up -d --remove-orphans fibonacci-go
Network root_default  Creating
Network root_default  Created
Container function  Creating
Container function  Created
Container function  Starting
Container function  Started
+ sleep 5
+ /root/test-client -function-name fibonacci-go -url localhost -port 50000 -n 5 -input 1
/root/test-client: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /root/test-client)
/root/test-client: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /root/test-client)
+ docker-compose -f /root/functions.yaml down
Container function  Stopping
Container function  Stopping
Container function  Stopped
Container function  Removing
Container function  Removed
Network root_default  Removing
Network root_default  Removed
++ docker ps -a -q
+ CONTAINERS=
++ expr length ''
+ '[' 0 -gt 0 ']'
+ for f in $FUNCTIONS
+ pull_test_function fibonacci-nodejs
+ FUNCTION_NAME=fibonacci-nodejs
+ echo 'Install and test: fibonacci-nodejs '
Install and test: fibonacci-nodejs 
+ docker-compose -f /root/functions.yaml pull fibonacci-nodejs
fibonacci-nodejs Pulling 
461246efe0a7 Already exists 
2109e39d8e97 Already exists 
c13b86695d29 Already exists 
3638cced3688 Already exists 
99720dbfc7e0 Already exists 
0474d454e71d Pulling fs layer 
c3f5c6456b6d Pulling fs layer 
c3f5c6456b6d Downloading  38.94kB/3.875MB
0474d454e71d Downloading      99B/99B
0474d454e71d Verifying Checksum 
0474d454e71d Download complete 
0474d454e71d Extracting      99B/99B
0474d454e71d Extracting      99B/99B
c3f5c6456b6d Downloading  3.483MB/3.875MB
c3f5c6456b6d Downloading  3.875MB/3.875MB
c3f5c6456b6d Verifying Checksum 
c3f5c6456b6d Download complete 
0474d454e71d Pull complete 
c3f5c6456b6d Extracting  65.54kB/3.875MB
c3f5c6456b6d Extracting  917.5kB/3.875MB
c3f5c6456b6d Extracting  1.573MB/3.875MB
c3f5c6456b6d Extracting  2.621MB/3.875MB
c3f5c6456b6d Extracting  3.875MB/3.875MB
c3f5c6456b6d Pull complete 
fibonacci-nodejs Pulled 
+ docker-compose -f /root/functions.yaml up -d --remove-orphans fibonacci-nodejs
Network root_default  Creating
Network root_default  Created
Container function  Creating
Container function  Created
Container function  Starting
Container function  Started
+ sleep 5
+ /root/test-client -function-name fibonacci-nodejs -url localhost -port 50000 -n 5 -input 1
/root/test-client: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /root/test-client)
/root/test-client: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /root/test-client)
+ docker-compose -f /root/functions.yaml down
Container function  Stopping
Container function  Stopping
Container function  Stopped
Container function  Removing
Container function  Removed
Network root_default  Removing
Network root_default  Removed
++ docker ps -a -q
+ CONTAINERS=
++ expr length ''
+ '[' 0 -gt 0 ']'
+ for f in $FUNCTIONS
+ pull_test_function fibonacci-python
+ FUNCTION_NAME=fibonacci-python
+ echo 'Install and test: fibonacci-python '
Install and test: fibonacci-python 
+ docker-compose -f /root/functions.yaml pull fibonacci-python
fibonacci-python Pulling 
025c56f98b67 Pulling fs layer 
778656c04542 Pulling fs layer 
a797f4af5315 Pulling fs layer 
80295b16500b Pulling fs layer 
25b33f30a646 Pulling fs layer 
8dfdbc885c70 Pulling fs layer 
59c5b73102bc Pulling fs layer 
4f4fb700ef54 Pulling fs layer 
80295b16500b Waiting 
25b33f30a646 Waiting 
8dfdbc885c70 Waiting 
59c5b73102bc Waiting 
4f4fb700ef54 Waiting 
025c56f98b67 Downloading  326.9kB/31.41MB
778656c04542 Downloading  11.71kB/1.078MB
a797f4af5315 Downloading  114.5kB/11.33MB
778656c04542 Verifying Checksum 
778656c04542 Download complete 
025c56f98b67 Downloading  5.495MB/31.41MB
a797f4af5315 Downloading  1.751MB/11.33MB
80295b16500b Downloading     231B/231B
80295b16500b Verifying Checksum 
80295b16500b Download complete 
025c56f98b67 Downloading  9.063MB/31.41MB
a797f4af5315 Downloading  3.828MB/11.33MB
25b33f30a646 Downloading  32.08kB/3.179MB
025c56f98b67 Downloading  12.93MB/31.41MB
a797f4af5315 Downloading  6.028MB/11.33MB
25b33f30a646 Downloading  1.588MB/3.179MB
025c56f98b67 Downloading  16.51MB/31.41MB
25b33f30a646 Verifying Checksum 
25b33f30a646 Download complete 
a797f4af5315 Downloading  8.223MB/11.33MB
025c56f98b67 Downloading  19.42MB/31.41MB
a797f4af5315 Downloading  9.841MB/11.33MB
8dfdbc885c70 Downloading  94.47kB/9.268MB
025c56f98b67 Downloading  21.67MB/31.41MB
a797f4af5315 Verifying Checksum 
a797f4af5315 Download complete 
8dfdbc885c70 Downloading  4.769MB/9.268MB
025c56f98b67 Downloading  24.61MB/31.41MB
59c5b73102bc Downloading     771B/3.965kB
59c5b73102bc Downloading  3.965kB/3.965kB
59c5b73102bc Verifying Checksum 
59c5b73102bc Download complete 
8dfdbc885c70 Verifying Checksum 
8dfdbc885c70 Download complete 
4f4fb700ef54 Downloading      32B/32B
4f4fb700ef54 Verifying Checksum 
4f4fb700ef54 Download complete 
025c56f98b67 Downloading  27.52MB/31.41MB
025c56f98b67 Downloading  30.13MB/31.41MB
025c56f98b67 Verifying Checksum 
025c56f98b67 Download complete 
025c56f98b67 Extracting  327.7kB/31.41MB
025c56f98b67 Extracting   8.52MB/31.41MB
025c56f98b67 Extracting  16.71MB/31.41MB
025c56f98b67 Extracting  27.85MB/31.41MB
025c56f98b67 Extracting  30.15MB/31.41MB
025c56f98b67 Extracting  31.41MB/31.41MB
025c56f98b67 Pull complete 
778656c04542 Extracting  32.77kB/1.078MB
778656c04542 Extracting  1.078MB/1.078MB
778656c04542 Extracting  1.078MB/1.078MB
778656c04542 Pull complete 
a797f4af5315 Extracting  131.1kB/11.33MB
a797f4af5315 Extracting  4.981MB/11.33MB
a797f4af5315 Extracting  11.33MB/11.33MB
a797f4af5315 Pull complete 
80295b16500b Extracting     231B/231B
80295b16500b Extracting     231B/231B
80295b16500b Pull complete 
25b33f30a646 Extracting  32.77kB/3.179MB
25b33f30a646 Extracting  2.982MB/3.179MB
25b33f30a646 Extracting  3.179MB/3.179MB
25b33f30a646 Pull complete 
8dfdbc885c70 Extracting   98.3kB/9.268MB
8dfdbc885c70 Extracting  6.291MB/9.268MB
8dfdbc885c70 Extracting  9.268MB/9.268MB
8dfdbc885c70 Pull complete 
59c5b73102bc Extracting  3.965kB/3.965kB
59c5b73102bc Extracting  3.965kB/3.965kB
59c5b73102bc Pull complete 
4f4fb700ef54 Extracting      32B/32B
4f4fb700ef54 Extracting      32B/32B
4f4fb700ef54 Pull complete 
fibonacci-python Pulled 
+ docker-compose -f /root/functions.yaml up -d --remove-orphans fibonacci-python
Network root_default  Creating
Network root_default  Created
Container function  Creating
Container function  Created
Container function  Starting
Container function  Started
+ sleep 5
+ /root/test-client -function-name fibonacci-python -url localhost -port 50000 -n 5 -input 1
/root/test-client: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /root/test-client)
/root/test-client: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /root/test-client)
+ docker-compose -f /root/functions.yaml down
Container function  Stopping
Container function  Stopping
Container function  Stopped
Container function  Removing
Container function  Removed
Network root_default  Removing
Network root_default  Removed
++ docker ps -a -q
+ CONTAINERS=
++ expr length ''
+ '[' 0 -gt 0 ']'
+ end_logging
+ exec
xkf15 commented 1 year ago

@xkf15 thanks for reporting! we would welcome your contribution! it would be great if you could help us support Ubuntu 22

I am very happy to contribute. My current solution is pretty ugly, just to precompile test-client in an old version of the machine and upload it to gem5 VM to do the tests. Not sure what is the best way to do that, but I think maybe compiling inside VM, rather than compiling on the host, may help.

Best, Kaifeng

dhschall commented 1 year ago

@xkf15 We fixed this issue now in #85. Instead of building the client on the machine we distribute it with the release.

Ill close this issue. In case it does not solve the problem for you feel free to reopen