Coder Social home page Coder Social logo

aifm-sys / aifm Goto Github PK

View Code? Open in Web Editor NEW
104.0 4.0 33.0 99.87 MB

AIFM: High-Performance, Application-Integrated Far Memory

License: MIT License

CMake 1.16% C++ 13.05% Shell 2.48% HTML 19.10% Makefile 3.30% Python 0.60% C 55.16% Go 0.01% Roff 1.11% M4 0.25% TeX 0.99% Awk 0.01% PHP 0.01% CSS 0.04% SWIG 0.01% Assembly 2.13% Perl 0.54% PostScript 0.05% SAS 0.01% Smalltalk 0.01%

aifm's Introduction

AIFM

Status License: MIT

AIFM stands for Application-Integrated Far Memory. It provides a simple, general, and high-performance mechanism for users to adapt ordinary memory-intensive applications to far memory. Different from existing paging-based systems, AIFM exposes far memory as far-memory pointers and containers in the language level. AIFM's API allows its runtime to accurately capture application semantics, therefore making intelligent decisions on data placement and movement.

Currently, AIFM supports C++ and TCP-enabled remote server memory.

Paper

Supported Platform

We strongly recommend you to run AIFM using the xl170 instance of Cloudlab as the code has been throughly tested there. We haven't done any test in other hardware environment. If you have trouble applying an cloudlab account, please contact us for assistance.

Build Instructions

Configure Cloudlab Instances

  1. Apply a Cloudlab account if you do not have one.

  2. Now you have logged into Cloublab console. Click Experiments|-->Create Experiment Profile. Upload cloudlab.profile provided in this repo root.

  3. Create a two-node instance using the profile.

Install Dependencies (on all nodes)

Now you have logged into your Cloudlab instances. You have to install the necessary dependencies in order to build AIFM. Note you have to do run those steps on all Cloudlab nodes you have created.

  1. Update package database and Linux kernel version.
sudo apt-get update
echo Y | sudo apt-get install linux-headers-5.0.0-20 linux-headers-5.0.0-20-generic linux-hwe-edge-tools-5.0.0-20 linux-image-5.0.0-20-generic linux-modules-5.0.0-20-generic linux-tools-5.0.0-20-generic
sudo reboot
  1. Set bash as the default shell.
chsh -s /bin/bash
  1. Install Mellanox OFED.
wget "http://content.mellanox.com/ofed/MLNX_OFED-4.6-1.0.1.1/MLNX_OFED_LINUX-4.6-1.0.1.1-ubuntu18.04-x86_64.tgz"
tar xvf MLNX_OFED_LINUX-4.6-1.0.1.1-ubuntu18.04-x86_64.tgz
cd MLNX_OFED_LINUX-4.6-1.0.1.1-ubuntu18.04-x86_64
sudo ./mlnxofedinstall --add-kernel-support --dpdk --upstream-libs # it's fine to see 'Failed to install libibverbs-dev DEB'
sudo /etc/init.d/openibd restart
  1. Install libraries and tools.
sudo apt-get update
echo Y | sudo apt-get --fix-broken install
echo Y | sudo apt-get install libnuma-dev libmnl-dev libnl-3-dev libnl-route-3-dev
echo Y | sudo apt-get install libcrypto++-dev libcrypto++-doc libcrypto++-utils
echo Y | sudo apt-get install software-properties-common
echo Y | sudo apt-get install gcc-9 g++-9 python-pip
echo Y | sudo add-apt-repository ppa:ubuntu-toolchain-r/test
echo Y | sudo apt-get purge cmake
sudo pip install --upgrade pip
sudo pip install cmake

Build Shenango and AIFM (on all nodes)

For all nodes, clone our github repo in a same path, say, your home directory.

AIFM relies on Shenango's threading and TCP runtime. The build_all.sh script in repo root compiles both Shenango and AIFM automatically.

./build_all.sh

Setup Shenango (on all nodes)

After rebooting machines, you have to rerun the script to setup Shenango.

sudo ./scripts/setup_machine.sh

Configure AIFM (only on the compute node)

So far you have built AIFM on both nodes. One node is used as the compute node to run applications, while the other node is used as the remote memory node. Now edit aifm/configs/ssh in the compute node; change MEM_SERVER_SSH_IP to the IP of the remote memory node (eno49 inet in ifconfig), and MEM_SERVER_SSH_USER to your ssh username. Please make sure the compute node can ssh the remote memory node successfully without password.

Run AIFM Tests

Now you are able to run AIFM programs. aifm/test contains a bunch of test files of using local/far pointers and containers (and few other system components). You can also treat those tests as examples of using AIFM. aifm/test.sh is a script that runs all tests automatically. It includes the commands of running AIFM end-to-end.

./test.sh

Reproduce Experiment Results

We provide code and scripts in aifm/exp folder for reproducing our experiments. For more details, see aifm/exp/README.md.

Repo Structure

Github Repo Root
 |---- build_all.sh  # A push-button build script for building both Shenango and AIFM.
 |---- shenango      # A modified version of Shenango runtime for AIFM. DO NOT USE OTHER VERSIONS.
 |---- aifm          # AIFM code base.
        |---- bin       # Test binaries and a TCP server ran at the remote memory node.
        |---- configs   # Configuration files for running AIFM.
        |---- inc       # AIFM headers.
        |---- src       # AIFM cpp files.
        |---- test      # Test files of using far-memory pointers and containers.
        |---- snappy    # An AIFM-enhanced snappy.
        |---- DataFrame # C++ DataFrame library (which includes both the original version and the AIFM version).
        |---- exp       # Code and scripts for reproducing our experiments.
        |---- Makefile
        |---- build.sh  # The script for building AIFM.
        |---- test.sh   # The script for testing AIFM.
        |---- shared.sh # A collection of helper functions for other scripts.

Known Limitations

AIFM is a research prototype rather than a production-ready system. Its current implementation has two main limitations.

  1. A thread cannot have more than one live DerefScope at any time (but you can have multiple live DerefScopes across different threads). For example, when executing foo()->bar() in a thread, if you've already instantiated a DerefScope in foo(), you must not instantiate another one in bar(). The right way is to pass the one in foo() as a reference to bar().
  2. AIFM assumes that the remote memory is sufficiently large so that it never garbage collects the dead (i.e., freed) objects in the remote memory, see FarMemManager::mutator_wait_for_gc_far_mem() in aifm/src/manager.cpp. However, AIFM does garbage collects the dead objects in the local memory since it's a precious resource.

Contact

Contact zainruan [at] csail [dot] mit [dot] edu for assistance.

aifm's People

Contributors

kiyoakii avatar saarthdeshpande avatar zainryan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

aifm's Issues

spend too much time to run an experiment

Hello, I am now trying to reproduce experiments result in CloudLab. But the program in fig6bc has run over five hours. Is it usual case?
Here is some information.

$ps -eo etime,cmd | grep main
   05:00:28 sudo stdbuf -o0 sh -c ./main /users/chenkefa/AIFM/aifm/configs/client.config                            18.18.1.3:8000
   05:00:28 sh -c ./main /users/chenkefa/AIFM/aifm/configs/client.config                            18.18.1.3:8000
   05:00:28 ./main /users/chenkefa/AIFM/aifm/configs/client.config 18.18.1.3:8000
   00:00 grep main
$ls -l  # in the dir fig6bc
total 17324 
-rw-r--r-- 1 chenkefa aifmtest-PG0     1311 Feb  8 21:52 Makefile
-rw-r--r-- 1 chenkefa aifmtest-PG0      895 Feb  8 21:52 README.txt
-rw-r--r-- 1 chenkefa aifmtest-PG0       74 Feb  8 22:22 log.1331
-rw-r--r-- 1 chenkefa aifmtest-PG0        0 Feb  8 22:22 log.2218
-rwxr-xr-x 1 chenkefa aifmtest-PG0 17112112 Feb  8 22:22 main
-rw-r--r-- 1 chenkefa aifmtest-PG0    14328 Feb  8 22:22 main.cpp
-rw-r--r-- 1 chenkefa aifmtest-PG0     2941 Feb  8 22:22 main.d
-rw-r--r-- 1 chenkefa aifmtest-PG0  4716248 Feb  8 22:22 main.o
-rwxr-xr-x 1 chenkefa aifmtest-PG0      945 Feb  8 21:52 run.sh

The content of log.1331 is the same as the description of README.txt , but log.2218 is still empty.
By the way, how long is every experiment expected to run?

How to measure the throughput of the application

In your paper, many test applications use throughput as a metric. How do you measure the throughput of your application?
I can't even find the TCP connection between the compute node and the memory node

A bug in gc_cache() and CircularBuffer

Hello, I have been developing my application on AIFM for some time. Recently I encountered a bug with gc_cache() and CircularBuffer().

Describe the bug

In gc_cache() a GC worker first checks is_free_cache_high(), which is the size of free_regions_ over the capacity of free_regions, then tries to pick up regions from used_regions_. There is a case where the is_free_cache_high() is not satisfied by "default".

This is because the free_regions_ is constructed with free_regions_count as the argument.

free_regions_ = std::move(CircularBuffer<Region, false>(free_regions_count));

The free_regions_count includes the number of real free regions that can be allocated and the number of per-core pre-allocated free regions. For example, if the kNumSocket1CPUs is set to be 30 and the free_regions_count is 76 (16 + 30 * 2), then only 16 free regions will be in the free_regions_ circular buffer and the is_free_cache_high() is not satisfied by default.

So if GC is triggered, the GC will run into an indefinite loop because the is_free_cache_high() will never be satisfied.

Priority

I think this can be fixed. I can change this line which initialized the free_regions_ from using free_regions_count as the size (capacity) argument to using free_regions_coun - 2 * helpers::kNumSocket1CPUs.

  free_regions_ = std::move(CircularBuffer<Region, false>(free_regions_count - 2* helpers::kNumSocket1CPUs));

I can create a PR for this if other things are fine after the change because there may be some places where I miss.

Screenshots

image
The gc_cache() runs into an indefinite loop.

server

I think the environment does not matter much in this case.
g++ version: g++ 9.2.0
kernel version: 5.14.0

fig6a segfault

Executing run.sh in each subdirectory of aifm/exp/fig6a/ throws a segmentation fault.

For linux_mem, execution is error-free only when kNumMutatorThreads = 1. For all other values of kNumMutatorThreads, a segmentation fault occurs.

There is no other error message printed. How can I fix this?

Execution is on cloudlab using the profile provided in this repository.

fig7 S3 links access denied

Hi,

I wish to reproduce the figure 7 results. However, sending a GET request to the links provided returns an HTTP 403 error.

Can you please share how I can have access to these links, and/or if they can be made public?

Thanks

Met with issues when starting the tcp_device_server.

Hello,

I am trying to re-produce the results for figure 6a using the code under /exp/fig6a/linux_mem/, however, I cannot successfully run the run_mem_server bash function and it turns out later that the it is due to the tcp_device_server was not started successfully. I tried to run the tcp_device_server on the remote memory node without involving the ssh by leveraging the following command. Then I got the failed to map ingress region issue. Can anyone help me getting out of this problem? Thanks!

albertgh@node-1:~/AIFM/aifm/exp$ ulimit -s 65536; /users/albertgh/AIFM/aifm/bin/tcp_device_server /users/albertgh/AIFM/aifm/configs/server.config 8000
CPU 09| <5> cpu: detected 20 cores, 1 nodes
CPU 09| <5> time: detected 2394 ticks / us
[ 0.000763] CPU 09| <5> loading configuration from '/users/albertgh/AIFM/aifm/configs/server.config'
[ 0.000808] CPU 09| <3> < 1 guaranteed kthreads is not recommended for networked apps
[ 0.000849] CPU 09| <2> control_setup: failed to map ingress region

installing error

When executing ./build_all.sh , the terminal showed the following errors:

(DGL) emc_admin@numasvr02:~/AIFM$ sudo ./build_all.sh
[sudo] password for emc_admin: 
make -C /lib/modules/5.4.0-139-generic/build M=/home/emc_admin/AIFM/shenango/ksched/build src=/home/emc_admin/AIFM/shenango/ksched clean
make[1]: Entering directory '/usr/src/linux-headers-5.4.0-139-generic'
  CLEAN   /home/emc_admin/AIFM/shenango/ksched/build/Module.symvers
make[1]: Leaving directory '/usr/src/linux-headers-5.4.0-139-generic'
touch "/home/emc_admin/AIFM/shenango/ksched/build/Makefile"
make -C /lib/modules/5.4.0-139-generic/build M=/home/emc_admin/AIFM/shenango/ksched/build src=/home/emc_admin/AIFM/shenango/ksched modules
make[1]: Entering directory '/usr/src/linux-headers-5.4.0-139-generic'
  CC [M]  /home/emc_admin/AIFM/shenango/ksched/build/ksched.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC [M]  /home/emc_admin/AIFM/shenango/ksched/build/ksched.mod.o
  LD [M]  /home/emc_admin/AIFM/shenango/ksched/build/ksched.ko
make[1]: Leaving directory '/usr/src/linux-headers-5.4.0-139-generic'
Submodule path 'dpdk': checked out '0da7f445df445630c794897347ee360d6fe6348b'
Submodule path 'rdma-core': checked out '240594e862c5044fdfcff06702959dca6a73e095'
Submodule path 'spdk': checked out '3947bc2492c7e66b7f9cb55b30857afc5801ee8d'
patching file drivers/net/ixgbe/ixgbe_rxtx.c
patching file drivers/net/ixgbe/ixgbe_rxtx.h
patching file drivers/net/ixgbe/ixgbe_rxtx_vec_common.h
patching file drivers/net/ixgbe/ixgbe_rxtx_vec_sse.c
make: Entering directory '/home/emc_admin/AIFM/shenango/dpdk'
Configuration done using x86_64-native-linuxapp-gcc
make: Leaving directory '/home/emc_admin/AIFM/shenango/dpdk'
make: Entering directory '/home/emc_admin/AIFM/shenango/dpdk'
== Build lib
== Build lib/librte_compat
== Build lib/librte_cfgfile
  SYMLINK-FILE include/rte_compat.h
  SYMLINK-FILE include/rte_cfgfile.h
  CC rte_cfgfile.o
== Build lib/librte_kvargs
  SYMLINK-FILE include/rte_kvargs.h
  CC rte_kvargs.o
  AR librte_cfgfile.a
  INSTALL-LIB librte_cfgfile.a
  AR librte_kvargs.a
  INSTALL-LIB librte_kvargs.a
== Build lib/librte_eal
== Build lib/librte_eal/common
......
== Build lib/librte_eal/linuxapp
== Build lib/librte_eal/linuxapp/eal
......
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘memzone_lookup_thread_unsafe’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:38:8: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
   38 |  arr = &mcfg->memzones;
      |        ^~~~~~~~~~~~~~~
  CC rte_malloc.o
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘memzone_reserve_aligned_thread_unsafe’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:70:8: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
   70 |  arr = &mcfg->memzones;
      |        ^~~~~~~~~~~~~~~
  CC hotplug_mp.o
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_memzone_reserve_thread_safe’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:197:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  197 |  rte_rwlock_write_lock(&mcfg->mlock);
      |                        ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:202:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  202 |  rte_rwlock_write_unlock(&mcfg->mlock);
      |                          ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_memzone_free’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:258:8: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  258 |  arr = &mcfg->memzones;
      |        ^~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:260:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  260 |  rte_rwlock_write_lock(&mcfg->mlock);
      |                        ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:276:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  276 |  rte_rwlock_write_unlock(&mcfg->mlock);
      |                          ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_memzone_lookup’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:295:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  295 |  rte_rwlock_read_lock(&mcfg->mlock);
      |                       ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:299:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  299 |  rte_rwlock_read_unlock(&mcfg->mlock);
      |                         ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘dump_memzone’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:315:32: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  315 |  mz_idx = rte_fbarray_find_idx(&mcfg->memzones, mz);
      |                                ^~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_eal_memzone_init’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:372:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  372 |  rte_rwlock_write_lock(&mcfg->mlock);
      |                        ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:375:21: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  375 |    rte_fbarray_init(&mcfg->memzones, "memzone",
      |                     ^~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:380:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  380 |    rte_fbarray_attach(&mcfg->memzones)) {
      |                       ^~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:382:27: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  382 |   rte_rwlock_write_unlock(&mcfg->mlock);
      |                           ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:386:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  386 |  rte_rwlock_write_unlock(&mcfg->mlock);
      |                          ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c: In function ‘rte_memzone_walk’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:400:8: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  400 |  arr = &mcfg->memzones;
      |        ^~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:402:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  402 |  rte_rwlock_read_lock(&mcfg->mlock);
      |                       ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memzone.c:409:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  409 |  rte_rwlock_read_unlock(&mcfg->mlock);
      |                         ^~~~~~~~~~~~
  CC malloc_elem.o
  CC malloc_heap.o
  CC malloc_mp.o
  CC rte_keepalive.o
  CC rte_option.o
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_vfio.c: In function ‘rte_vfio_setup_device’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_vfio.c:580:27: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  580 |  rte_rwlock_t *mem_lock = &mcfg->memory_hotplug_lock;
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~
  CC rte_service.o
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_vfio.c: In function ‘rte_vfio_release_device’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_vfio.c:785:27: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  785 |  rte_rwlock_t *mem_lock = &mcfg->memory_hotplug_lock;
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~
  CC rte_reciprocal.o
  CC rte_cpuflags.o
  CC rte_hypervisor.o
  CC rte_spinlock.o
  CC rte_cycles.o
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c: In function ‘virt2memseg_list’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:227:9: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  227 |   msl = &mcfg->memsegs[msl_idx];
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c: In function ‘rte_memseg_contig_walk_thread_unsafe’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:558:33: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  558 |   struct rte_memseg_list *msl = &mcfg->memsegs[i];
      |                                 ^~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c: In function ‘rte_memseg_contig_walk’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:597:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  597 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:599:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  599 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c: In function ‘rte_memseg_walk_thread_unsafe’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:611:33: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  611 |   struct rte_memseg_list *msl = &mcfg->memsegs[i];
      |                                 ^~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c: In function ‘rte_memseg_walk’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:639:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  639 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:641:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  641 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c: In function ‘rte_memseg_list_walk_thread_unsafe’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:653:33: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  653 |   struct rte_memseg_list *msl = &mcfg->memsegs[i];
      |                                 ^~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c: In function ‘rte_memseg_list_walk’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:672:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  672 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:674:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  674 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c: In function ‘rte_memseg_get_fd’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:721:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  721 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:723:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  723 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c: In function ‘rte_memseg_get_fd_offset’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:771:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  771 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:773:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  773 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c: In function ‘rte_eal_memory_init’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:790:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  790 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_memory.c:809:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  809 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_tailqs.c: In function ‘rte_eal_tailq_lookup’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_tailqs.c:47:11: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
   47 |    return &mcfg->tailq_head[i];
      |           ^~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_tailqs.c: In function ‘rte_dump_tailq’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_tailqs.c:61:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
   61 |  rte_rwlock_read_lock(&mcfg->qlock);
      |                       ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_tailqs.c:63:40: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
   63 |   const struct rte_tailq_head *tailq = &mcfg->tailq_head[i];
      |                                        ^~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_tailqs.c:69:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
   69 |  rte_rwlock_read_unlock(&mcfg->qlock);
      |                         ^~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_tailqs.c: In function ‘rte_eal_tailq_create’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/eal_common_tailqs.c:82:10: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
   82 |   head = &mcfg->tailq_head[rte_tailqs_count];
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c: In function ‘remap_segment’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c:680:9: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  680 |   msl = &mcfg->memsegs[msl_idx];
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c: In function ‘prealloc_segments’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c:998:11: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  998 |     msl = &mcfg->memsegs[msl_idx];
      |           ^~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c: In function ‘eal_legacy_hugepage_init’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c:1351:9: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 1351 |   msl = &mcfg->memsegs[0];
      |         ^~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memalloc.c: In function ‘alloc_seg_walk’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memalloc.c:884:12: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  884 |  cur_msl = &mcfg->memsegs[msl_idx];
      |            ^~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c:1622:33: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 1622 |   struct rte_memseg_list *msl = &mcfg->memsegs[i];
      |                                 ^~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memalloc.c: In function ‘free_seg_walk’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memalloc.c:996:14: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  996 |  found_msl = &mcfg->memsegs[msl_idx];
      |              ^~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c: In function ‘memseg_primary_init_32’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memalloc.c: In function ‘sync_walk’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c:2104:11: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 2104 |     msl = &mcfg->memsegs[msl_idx];
      |           ^~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memalloc.c:1412:16: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 1412 |  primary_msl = &mcfg->memsegs[msl_idx];
      |                ^~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memalloc.c: In function ‘secondary_msl_create_walk’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memalloc.c:1463:16: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 1463 |  primary_msl = &mcfg->memsegs[msl_idx];
      |                ^~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c: In function ‘memseg_primary_init’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c:2311:10: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 2311 |    msl = &mcfg->memsegs[msl_idx++];
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c: In function ‘memseg_secondary_init’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c:2339:9: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 2339 |   msl = &mcfg->memsegs[msl_idx];
      |         ^~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[5]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/internal/rte.compile-pre.mk:116: eal_common_tailqs.o] Error 1
make[5]: *** Waiting for unfinished jobs....
cc1: all warnings being treated as errors
make[5]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/internal/rte.compile-pre.mk:116: eal_common_memzone.o] Error 1
cc1: all warnings being treated as errors
make[5]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/internal/rte.compile-pre.mk:116: eal_common_memory.o] Error 1
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c: In function ‘malloc_socket_to_heap_id’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:80:30: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
   80 |   struct malloc_heap *heap = &mcfg->malloc_heaps[i];
      |                              ^~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c: In function ‘malloc_add_seg’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:125:9: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  125 |  heap = &mcfg->malloc_heaps[heap_idx];
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:133:14: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  133 |  found_msl = &mcfg->memsegs[msl_idx];
      |              ^~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c: In function ‘try_expand_heap’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:491:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  491 |  rte_rwlock_write_lock(&mcfg->memory_hotplug_lock);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:501:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  501 |  rte_rwlock_write_unlock(&mcfg->memory_hotplug_lock);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘rte_malloc_get_socket_stats’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c: In function ‘alloc_more_mem_on_socket’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:161:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  161 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:549:33: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  549 |   struct rte_memseg_list *msl = &mcfg->memsegs[i];
      |                                 ^~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:167:30: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  167 |  ret = malloc_heap_get_stats(&mcfg->malloc_heaps[heap_idx],
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:170:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  170 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘rte_malloc_dump_heaps’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:184:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  184 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:188:20: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  188 |   malloc_heap_dump(&mcfg->malloc_heaps[idx], f);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:191:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  191 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘rte_malloc_heap_get_socket’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c: In function ‘malloc_heap_alloc_on_heap_id’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:209:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  209 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:636:29: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  636 |  struct malloc_heap *heap = &mcfg->malloc_heaps[heap_id];
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:211:29: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  211 |   struct malloc_heap *tmp = &mcfg->malloc_heaps[idx];
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:225:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  225 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘rte_malloc_heap_socket_is_external’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:240:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  240 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:242:29: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  242 |   struct malloc_heap *tmp = &mcfg->malloc_heaps[idx];
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:250:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  250 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘rte_malloc_dump_stats’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:265:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  265 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:269:30: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  269 |   struct malloc_heap *heap = &mcfg->malloc_heaps[heap_id];
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:283:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  283 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c: In function ‘heap_alloc_biggest_on_heap_id’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:738:29: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  738 |  struct malloc_heap *heap = &mcfg->malloc_heaps[heap_id];
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘find_named_heap’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:329:30: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  329 |   struct malloc_heap *heap = &mcfg->malloc_heaps[i];
      |                              ^~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘rte_malloc_heap_memory_add’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:354:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  354 |  rte_rwlock_write_lock(&mcfg->memory_hotplug_lock);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:382:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  382 |  rte_rwlock_write_unlock(&mcfg->memory_hotplug_lock);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘rte_malloc_heap_memory_remove’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:401:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  401 |  rte_rwlock_write_lock(&mcfg->memory_hotplug_lock);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:421:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  421 |  rte_rwlock_write_unlock(&mcfg->memory_hotplug_lock);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘sync_mem_walk’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:447:15: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  447 |   found_msl = &mcfg->memsegs[msl_idx];
      |               ^~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c: In function ‘malloc_heap_free’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:931:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  931 |  rte_rwlock_write_lock(&mcfg->memory_hotplug_lock);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘sync_memory’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:492:23: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  492 |  rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:986:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  986 |  rte_rwlock_write_unlock(&mcfg->memory_hotplug_lock);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:528:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  528 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘rte_malloc_heap_create’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:561:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  561 |  rte_rwlock_write_lock(&mcfg->memory_hotplug_lock);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:564:29: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  564 |   struct malloc_heap *tmp = &mcfg->malloc_heaps[i];
      |                             ^~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:590:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  590 |  rte_rwlock_write_unlock(&mcfg->memory_hotplug_lock);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c: In function ‘rte_malloc_heap_destroy’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:609:24: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  609 |  rte_rwlock_write_lock(&mcfg->memory_hotplug_lock);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c: In function ‘malloc_heap_add_external_memory’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:1111:33: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 1111 |   struct rte_memseg_list *tmp = &mcfg->memsegs[i];
      |                                 ^~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/rte_malloc.c:633:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
  633 |  rte_rwlock_write_unlock(&mcfg->memory_hotplug_lock);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c: In function ‘rte_eal_malloc_heap_init’:
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:1268:31: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 1268 |    struct malloc_heap *heap = &mcfg->malloc_heaps[i];
      |                               ^~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:1282:26: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 1282 |   rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/emc_admin/AIFM/shenango/dpdk/lib/librte_eal/common/malloc_heap.c:1290:25: error: taking address of packed member of ‘struct rte_mem_config’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
 1290 |  rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[5]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/internal/rte.compile-pre.mk:116: eal_memalloc.o] Error 1
cc1: all warnings being treated as errors
make[5]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/internal/rte.compile-pre.mk:116: eal_vfio.o] Error 1
cc1: all warnings being treated as errors
cc1: all warnings being treated as errors
make[5]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/internal/rte.compile-pre.mk:116: eal_memory.o] Error 1
make[5]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/internal/rte.compile-pre.mk:116: rte_malloc.o] Error 1
cc1: all warnings being treated as errors
make[5]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/internal/rte.compile-pre.mk:116: malloc_heap.o] Error 1
make[4]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/rte.subdir.mk:37: eal] Error 2
make[3]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/rte.subdir.mk:37: linuxapp] Error 2
make[2]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/rte.subdir.mk:37: librte_eal] Error 2
make[1]: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/rte.sdkbuild.mk:51: lib] Error 2
make: *** [/home/emc_admin/AIFM/shenango/dpdk/mk/rte.sdkroot.mk:101: all] Error 2
make: Leaving directory '/home/emc_admin/AIFM/shenango/dpdk'
Failed to build DPDK.
Failed to build Shenango.

But I can properly run the ./dpdk.sh and ./scripts/setup_machine.sh in the original shenango .

gcc 9.4.0
cmake 3.25.2
ubuntu 20.04 x86_64
MLNX_OFED_LINUX 4.9-6.0.6.0-ubuntu20.04-x86_64

And when I set gcc/g++7.5 as the default compiler, another one issue occured:

In file included from /home/emc_admin/AIFM/shenango/dpdk/build/build/kernel/linux/igb_uio/igb_uio.c:8:
./include/linux/device.h:1805:2: error: this statement may fall through [-Werror=implicit-fallthrough=]
  _dev_notice(dev, dev_fmt(fmt), ##__VA_ARGS__)

Could you kindly please give me some advice for solving this problem? Thank you @zainryan in advance!

Sche.c preempt assertion error

Hi, Zain

I understand this might not be a suitable place to ask, but I really want to get your help on shenango runtime. I encounter preempt assertion errors when I am modifying AIFM source code to add customized functionality.

[413.181084] CPU 02| <0> FATAL: runtime/sched.c:558 ASSERTION '(preempt_cnt & ~(1 << 31)) != 1' FAILED IN 'schedule'

Basically, I add some spin lock, cond_var, and use the TCP stack. The error looks to me that the preempt_cnt is not set suitably when threads get scheduled. But I feel that properly unlock every lock when exiting a function.

I wonder if you have any experiences of how this would happen. Can I just comment that assertion?

Best,
Yang

Memory leak?

Hello,

I was porting an application on AIFM. The application uses allocate_dataframe_vector_heap's push_back() and clear() to allocate and deallocate the vector. By using, get_free_mem_ratio, I can observe that free memory reduces with the allocation. However, with clear(), it does not increase the free memory ratio. The implementation of Clear() simply sets the size to 0 rather than actually deallocating the memory. Similar to clear, pop_back simply decrements the size.

Can you please guide how I can fix the issue?

Thanks,
Probir

SPDK backend

Hi. Very interesting work.

I am wondering how to use an NVMe-SSD based far memory as the backend as mentioned in Sec. 7: "We integrated two far memory backends into AIFM: a remote memory server based on a DPDK-based TCP stack, and an NVMe SSD using an SPDK-based storage stack."
Also I am having trouble finding where the implementation for the alternative SSD-based back end is located. I am also curious if/how other far-memory backends could be integrated into AIFM. Any hints in this regard would be greatly appreciated.

Thank you so much

mlx5_init: IB device not found

Hello, i try to run this project on my nodes and get the error as follows:

mlx5_init: IB device not found

I found this issue happen in the file ./shenango/runtime/net/directpath/mlx5/mlx5_init.c

int mlx5_common_init(struct hardware_q **rxq_out, struct direct_txq **txq_out,
	             unsigned int nr_rxq, unsigned int nr_txq, bool use_rss)

The value of dev_list[0] is NULL:

dev_list[i]: (nil)

It looks like i can't get device list.

Question 1: Why dev_list[0] is NULL? Is there any way to solve this problem?

Then, I found there is only mlx5 directory in ./shenango/runtime/net/directpath/

common.c common.d common.o defs.h mlx5

but my nodes use mlx4:

02:00.0 Ethernet controller: Mellanox Technologies MT27500 Family [ConnectX-3]

If i modify CONFIG_DIRECTPATH=y to CONFIG_DIRECTPATH=n in shared.mk, the runtime not works.

Question 2: Whether there is only mlx5 implementation? If I want to run this project on ConnectX-3 devices, can you give me some advice? (I can't apply for a cloudlab account successful.)

Thanks!

Zero window deadlock

Hi,

I was trying to stress testing the Shenango runtime associated with AIFM, and find that when sending objects larger than 64KB continuously, the TCP send function will cause deadlock.

Then I see in tcp.c, there writing "/* TODO: must allow at least one byte to avoid zero window deadlock */"; just wonder if there is quick fix for this issue.

Best,
Yang

ASSERTION 'tcp_dial(laddr, raddr, &remote_master_) != 0' FAILED IN 'TCPDevice'

Hi zain,when I run ./run.sh in exp/fig6a/aifm_nt,The following error message appears,Can you help me see what went wrong?
CPU 19| <5> cpu: detected 20 cores, 1 nodes
CPU 19| <5> time: detected 2394 ticks / us
[ 0.000646] CPU 19| <5> loading configuration from '/users/wpq/aifm/aifm/configs/client.config'
[ 0.000693] CPU 19| <3> < 1 guaranteed kthreads is not recommended for networked apps
[ 0.019104] CPU 19| <5> net: started network stack
[ 0.019118] CPU 19| <5> net: using the following configuration:
[ 0.019124] CPU 19| <5> addr: 18.18.1.2
[ 0.019131] CPU 19| <5> netmask: 255.255.255.0
[ 0.019138] CPU 19| <5> gateway: 18.8.1.1
[ 0.019144] CPU 19| <5> mac: D2:35:87:84:25:65
[ 0.389310] CPU 19| <5> thread: created thread 0
[ 0.389429] CPU 19| <5> spawning 18 kthreads
[ 0.389564] CPU 10| <5> thread: created thread 1
[ 0.389651] CPU 02| <5> thread: created thread 2
[ 0.389755] CPU 13| <5> thread: created thread 3
[ 0.389876] CPU 05| <5> thread: created thread 4
[ 0.390188] CPU 12| <5> thread: created thread 5
[ 0.390383] CPU 07| <5> thread: created thread 6
[ 0.390551] CPU 16| <5> thread: created thread 7
[ 0.390787] CPU 18| <5> thread: created thread 8
[ 0.390924] CPU 00| <5> thread: created thread 9
[ 0.391127] CPU 14| <5> thread: created thread 10
[ 0.391283] CPU 17| <5> thread: created thread 11
[ 0.391635] CPU 08| <5> thread: created thread 12
[ 0.391778] CPU 10| <5> thread: created thread 13
[ 0.392052] CPU 05| <5> thread: created thread 14
[ 0.392254] CPU 06| <5> thread: created thread 15
[ 0.392405] CPU 12| <5> thread: created thread 16
[ 0.392586] CPU 04| <5> thread: created thread 17
[ 5.398783] CPU 06| <0> FATAL: ../../..//src/device.cpp:65 ASSERTION 'tcp_dial(laddr, raddr, &remote_master_) != 0' FAILED IN 'TCPDevice'
./main(+0x697bb)[0x558831fa17bb]
./main(+0x69820)[0x558831fa1820]
./main(+0x26e14)[0x558831f5ee14]
./main(+0x13284)[0x558831f4b284]
./main(+0xfe41)[0x558831f47e41]
./main(+0x57260)[0x558831f8f260]
[ 5.399004] CPU 06| <5> init: shutting down -> FAILURE

ksched failed to insert

Hi,

I face the similar problem with this issue when running sudo ./scripts/setup_machine.sh. Previous compilation in build.sh has no errors.

rmmod: ERROR: Module ksched is not currently loaded
insmod: ERROR: could not insert module ./scripts/../ksched/build/ksched.ko: Unknown error 524

I think I enabled cstate?? cat /sys/module/intel_idle/parameters/max_cstate shows 9. However, cpuid | grep "C-states" shows all 0s as follows, unlike the output from the xl170 on cloudlab machine:
My VM:

dssl@ubuntu1804-2:~/AIFM/shenango$ sudo cpuid | grep "C-states"
      number of C0 sub C-states using MWAIT    = 0x0 (0)
      number of C1 sub C-states using MWAIT    = 0x0 (0)
      number of C2 sub C-states using MWAIT    = 0x0 (0)
      number of C3 sub C-states using MWAIT    = 0x0 (0)
      [...]
      number of C5 sub C-states using MWAIT    = 0x0 (0)
      number of C6 sub C-states using MWAIT    = 0x0 (0)
      number of C7 sub C-states using MWAIT    = 0x0 (0)
dssl@ubuntu1804-2:~/AIFM/shenango$ sudo dmesg | grep intel_idle
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.0.0-20-generic root=UUID=a5ec041b-3cac-43ff-9df1-ecc38fa4240c ro intel_idle.max_cstate=5 quiet splash vt.handoff=1
[    0.381777] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.0.0-20-generic root=UUID=a5ec041b-3cac-43ff-9df1-ecc38fa4240c ro intel_idle.max_cstate=5 quiet splash vt.handoff=1
[    2.139392] intel_idle: does not run on family 6 model 106

cloudlab machine:

lyuze@node-0:~/AIFM$ cpuid | grep "C-states"
      number of C0 sub C-states using MWAIT    = 0x0 (0)
      number of C1 sub C-states using MWAIT    = 0x2 (2)
      number of C2 sub C-states using MWAIT    = 0x1 (1)
      number of C3 sub C-states using MWAIT    = 0x2 (2)
      [...]
lyuze@node-0:~/AIFM$ sudo dmesg | grep intel_idle
[    9.699260] intel_idle: MWAIT substates: 0x2120
[    9.699261] intel_idle: v0.4.1 model 0x4F
[    9.699931] intel_idle: lapic_timer_reliable_states 0xffffffff

May I know what's important with the ksched.ko module? Does it matter if not installing it?
My VM runs on ubuntu18.04:

dssl@ubuntu1804-2:~/AIFM/shenango$ uname -r
5.0.0-20-generic
dssl@ubuntu1804-2:~/AIFM/shenango$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.6 LTS
Release:        18.04
Codename:       bionic

Link layer is not Ethernet.

Hello,

I am trying to run this project on our nodes. However, after building successfully by running build_all.sh, it failed to run the tests with same error message in issue #1.

After taking a deep look inside the system, we found that our failure was caused by a different link layer type InfiniBand, which asked to be Ethernet in dpdk dependency.

Can afim run on infiniband network? If can, how to adapt to it for us?

Here is our ibv_devinfo, hope it can help you.

hca_id: mlx5_0
        transport:                      InfiniBand (0)
        fw_ver:                         12.20.1820
        node_guid:                      248a:0703:00ad:3f7a
        sys_image_guid:                 248a:0703:00ad:3f7a
        vendor_id:                      0x02c9
        vendor_part_id:                 4115
        hw_ver:                         0x0
        board_id:                       DEL2180110032
        phys_port_cnt:                  1
                port:   1
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             4096 (5)
                        sm_lid:                 4
                        port_lid:               16
                        port_lmc:               0x00
                        link_layer:             InfiniBand

failed to load ksched.ko

Hello, I am trying to reproduce results of this paper. I think I have run commends based on README.md, but some problems happened when I set shenango.
Here is output of my system.

$uname -a && ofed_info -s
Linux poweredge0-PowerEdge-R740 5.0.0-20-generic #21~18.04.1-Ubuntu SMP Thu Jun 27 04:04:37 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
MLNX_OFED_LINUX-4.6-1.0.1.1:

And output.md is the terminal output when I run sudo ./build.sh in AIFM/shenango.
Thanks in advance for any help.
output.md

failed to map ingress region

Hi,

I'm facing similar error message as this but my tcp_device_server works fine, but not any client side tests:

lyuze@wanda0:~/AIFM/aifm$ sudo ./bin/test_array_add ./configs/client.config 192.168.0.230:8000
CPU 45| <5> cpu: detected 64 cores, 2 nodes
CPU 45| <5> time: detected 2899 ticks / us
[  0.004282] CPU 45| <5> loading configuration from './configs/client.config'
[  0.004333] CPU 45| <3> < 1 guaranteed kthreads is not recommended for networked apps
[  0.004367] CPU 45| <2> control_setup: failed to map ingress region
failed to start runtime

192.168.0.230 is my local host ip, and that matches the host_addr specified in client.config, but since this is solely client side it shouldn't matter. I make sure can ssh to local host without password.
I have no problem running sudo ./scripts/setup_machines.sh and tcp_device_server.

control_setup: failed to map ingress region

Hi,

I setup the running environment on my local servers which have Mellanox ConnectX-4 Lx, all commands in readme work fine expect when I run the test.
Here I only run a local one run_single_test test_array_add in test.sh

lyuze@wanda0:~/AIFM/aifm$ ./test.sh 
Running test test_array_add...
CPU 27| <5> cpu: detected 64 cores, 2 nodes
CPU 27| <5> time: detected 2899 ticks / us
[  0.003842] CPU 27| <5> loading configuration from '/home/lyuze/AIFM/aifm/configs/client.config'
[  0.003899] CPU 27| <3> < 1 guaranteed kthreads is not recommended for networked apps
[  0.003935] CPU 27| <2> control_setup: failed to map ingress region
failed to start runtime

However when I run it on cloudlab xl170 machines it worked. The test_array_add is reading the config file which has a host_addr as static 18.18.1.2, which is certainly not the host ip. May I know where this is coming from so that I suspect I should change accordingly on my own server? Thanks.

Segfault while reproducing fig11a

Hello, I'm trying to reproducing your experiments results on my own servers, but I encountered segmentation fault error while reproducing figure 11a (compressing array with snappy).

Here's my servers' specification:

  • CPU: Intel Xeon W2245 (3.9GHz, 8 cores)
  • Memory: 64GB
  • NIC: ConnectX4 EN 40G
  • OFED: 4.6-1.0.1.1
  • OS: Ubuntu 18.04.1, Linux kernel 5.0.0-20-generic
    Compute node(10.0.0.163) <---[40Gbit Switch]---> Far-memory node(10.0.0.164)

I modified setup/run.sh as my compute node's SSD and executed it. It seems like there's no uncompressed file in /mnt, so I manually decompressed enwik9.zip in /mnt. After that, I ran aifm/run.sh, and it looked like successfully run with 256MB of local_ram (there're elapsed time and "Force exiting..." message in log.256). But the script didn't process to next step(512MB of local_ram), so I terminated it and executed with specified local_ram, one by one manually. Then I encountered segmentation fault while reading uncompressed file.

Here's the log of the execution which was terminated by segmentation fault:

CPU 07| <5> cpu: detected 16 cores, 1 nodes
CPU 07| <5> time: detected 3912 ticks / us
[ 0.000533] CPU 07| <5> loading configuration from '/home/dcslab/aifm_org/AIFM/aifm/configs/client_noht.config'
[ 0.000603] CPU 04| <3> < 1 guaranteed kthreads is not recommended for networked apps
[ 0.012926] CPU 04| <5> net: started network stack
[ 0.012949] CPU 04| <5> net: using the following configuration:
[ 0.012952] CPU 04| <5> addr: 10.0.0.163
[ 0.012955] CPU 04| <5> netmask: 255.255.255.0
[ 0.012957] CPU 04| <5> gateway: 10.0.0.1
[ 0.012960] CPU 04| <5> mac: B2:DF:D3:AC:F3:46
[ 0.225713] CPU 04| <5> thread: created thread 0
[ 0.225837] CPU 04| <5> spawning 7 kthreads
[ 0.225997] CPU 06| <5> thread: created thread 1
[ 0.226033] CPU 15| <5> thread: created thread 2
[ 0.226169] CPU 02| <5> thread: created thread 3
[ 0.226347] CPU 13| <5> thread: created thread 4
[ 0.226512] CPU 09| <5> thread: created thread 5
[ 0.226584] CPU 12| <5> thread: created thread 6
[ 1.280757] CPU 02| <3> txq full
[ 2.280827] CPU 06| <3> runtime/net/directpath/mlx5/mlx5_rxtx.c:105 mlx5_transmit_one() suppressed 28131 times
[ 2.280855] CPU 06| <3> txq full
[ 3.286459] CPU 06| <3> runtime/net/directpath/mlx5/mlx5_rxtx.c:105 mlx5_transmit_one() suppressed 20166 times
[ 3.286488] CPU 06| <3> txq full
[ 4.287735] CPU 07| <3> runtime/net/directpath/mlx5/mlx5_rxtx.c:105 mlx5_transmit_one() suppressed 30077 times
[ 4.287760] CPU 07| <3> txq full
Have read 1048576 bytes.
Have read 2097152 bytes.
Have read 3145728 bytes.
Have read 4194304 bytes.
[ 5.476078] CPU 04| <3> runtime/net/directpath/mlx5/mlx5_rxtx.c:105 mlx5_transmit_one() suppressed 17831 times
[ 5.476099] CPU 04| <3> txq full
Have read 5242880 bytes.
Have read 6291456 bytes.
Have read 7340032 bytes.
Have read 8388608 bytes.
( ... read logs and some txq full messages ... )
Have read 49283072 bytes.
Have read 50331648 bytes.
Segmentation fault (core dumped)

and dmesg printed this:

[152719.113987] main[25957]: segfault at 697475746974 ip 0000556d9e173d57 sp 00007f7a7c2def20 error 4 in main[556d9e15d000+2ce000]
[152719.113996] Code: 84 c0 74 ef 41 80 3e ff 74 30 41 8b 45 00 48 c7 44 24 50 00 00 00 00 89 44 24 50 41 0f b7 45 04 66 89 44 24 54 48 8b 4c 24 50 <48> 8b 01 f6 c4 02 0f 85 dd 02 00 00 80 49 02 01 80 fb 07 0f 86 42

For debugging, I modified Makefile to give -g compile option, but main didn't create the core files. So I tried to use gdb to handle this problem, but after created threads there're some other SIGUSR2 errors occurred like below:

Thread 1 "main" received signal SIGUSR2, User defined signal 2.
0x000055555556ae26 in spin_lock (l=0x7fff7c01e044) at ../../..//../shenango/inc/base/lock.h:49
49 while (__sync_lock_test_and_set(&l->locked, 1)) {

I don't have any idea what did I missed. Could you give me some hints to fix this? I'll appreciate your reply!

Log allocator mark-compact

Hi,

Very nice code! Just wondering where you implement the log allocator mark-compact scheme, probably running in another thread somehow. But I could find the exact code location. Is it also in void FarMemManager::gc_cache(), where you do mark-evacuate for cold entries?

Here is the text quoted from the paper: near the end of sec5.2

To free an object, the runtime marks the object as free. AIFM leverages a mark- compact evacuator to achieve a low memory fragmentation ratio, as shown with other copying log allocators [63].

Best,
Yang

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.