Git Product home page Git Product logo

comanche's People

Contributors

dickeycl avatar dwaddington avatar fengggli avatar fengggli2 avatar kant avatar tjanssen3 avatar

Watchers

 avatar  avatar

Forkers

dwaddington

comanche's Issues

fs-integration

TODO

  • File operations:
    *remove file
    *append to file

  • Capture system call

    • open/close
    • read/write
  • systemutils

  • fio test

    • simple implementation
    • dual-channel version.
  • Intercept

    • read/write can be interepted.
    • experiment 1 show overhead of fuse by tracing. (why set max_write as 128KB? is the default lower than this? see this issue 161 in libfuse )
    • experiment 2 can be comparing performance of dual path or all direct.
    • Explain differences of this with direct-fuse and fusionfs. (zero-copy in userspace?)
    • dd/ perf

mcas memory register in nvmestore

  1. The second mmap has MAP_PRIVATE, so dont memset. otherwise another private copy(some un-aligned physical address will be used)
  2. I verified both virtual addr and phys_addr are 2M aligned, but still failed in regestration.
  3. The previous cuda-dma seems to work, what happened to this hugepage memory?

Previously I had tried to use newer dpdk(fengggli/dpdk#1), but failed

Couldn't get fd no hugepage file

This happens sometime if I didn' exit dpdk application peacefully.

(py36) lifen@sievert(:):~/Workspace/comanche/build$./src/components/block/nvme/unit_test/blocknvme-test1 20:00.0       │[  +0.000002] mcas: exposure added (pid=7788, token=feeb, paddr=79f400000, size=4194304)
[==========] Running 3 tests from 1 test case.                                                                         │[  +0.000000] walk result: 79f400000
[----------] Global test environment set-up.                                                                           │[  +0.000008] mcas: mmap called --------------------
[----------] 3 tests from Block_nvme_test                                                                              │[  +0.000001] mcas: mmap flags=fb token=feeb
[ RUN      ] Block_nvme_test.InstantiateBlockDevice                                                                    │[  +0.000001] mcas: mmap remapping (79f400000,4194304)
rte_virtio_pmd_init(): IOPL call failed - cannot use virtio PMD                                                        │[  +0.000001] mcas: vm_start=700000000 vm_end=700400000 delta=4194304
[LOG]:Using API defined memory limit 48 MB                                                                             │[  +0.000019] mcas: mmap OK
[LOG]:CPU count: 24                                                                                                    │[  +2.088501] mcas: vm_close
EAL: No free hugepages reported in hugepages-1048576kB                                                                 │[  +0.000010] mcas: ioctl (9) (arg=7fffa0bbeef0)
EAL: Couldn't get fd on hugepage file                                                                                  │[  +0.000001] mcas: calling remove_exposure
EAL: FATAL: Cannot init memory                                                                                         │[  +0.000000] mcas: remove_exposure (token=feeb)
                                                                                                                       │[  +0.000001] mcas: removed exposure feeb
EAL: Cannot init memory                                                                                                │(py36) lifen@sievert(:):~/Workspace/comanche$ls /dev/
                                                                                                                       │Display all 223 possibilities? (y or n)
Exception:API error                                                                                                    │(py36) lifen@sievert(:):~/Workspace/comanche$ls /dev/ -alt|grep huge
Trace/breakpoint trap (core dumped)          

nvmestore performance(also with DAWN)

nvme component

  1. put/get/get_direct of 4k, 64k, 1M, 16M, 256M
  2. latency bins.
  3. latency across time

dawn+ hstore

  1. put/get/get_direct 4k, 64k (1M&16M 256M needs special attention because of the two-stage)
  2. lantency bins.
  3. latency across time

[illegal free after upgrading to new dpdk/spdk]

After upgrading dpdk/spdk, the src/lib/core unit test failed.

Debug output

(base) fengggli@ribbit5(:):~/WorkSpace/comanche/build$gdb ./src/lib/core/unit_test/core-test1
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./src/lib/core/unit_test/core-test1...done.
(gdb) r
Starting program: /home/fengggli/WorkSpace/comanche/build/src/lib/core/unit_test/core-test1
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[==========] Running 3 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 3 tests from Core_test
[ RUN      ] Core_test.DPDKInit
[LOG]:Using API defined memory limit 32 MB
[LOG]:CPU count: 48
[New Thread 0x7ffff53f1700 (LWP 47948)]
[New Thread 0x7ffff4bf0700 (LWP 47949)]
EAL: No available hugepages reported in hugepages-1048576kB
...
...
[LOG]:##- freeing DPDK memory: 0x1011e5000

Thread 1 "core-test1" received signal SIGSEGV, Segmentation fault.
0x00007ffff6f06898 in malloc_heap_free (elem=<optimized out>)
    at /home/fengggli/WorkSpace/comanche/src/lib/dpdk/dpdk-19.05/lib/librte_eal/common/malloc_heap.c:888
888                     if (tmp->flags & RTE_MEMSEG_FLAG_DO_NOT_FREE) {
(gdb) bt
#0  0x00007ffff6f06898 in malloc_heap_free (elem=<optimized out>)
    at /home/fengggli/WorkSpace/comanche/src/lib/dpdk/dpdk-19.05/lib/librte_eal/common/malloc_heap.c:888
#1  0x00007ffff6f0079c in rte_free (addr=addr@entry=0x1011e5000)
    at /home/fengggli/WorkSpace/comanche/src/lib/dpdk/dpdk-19.05/lib/librte_eal/common/rte_malloc.c:34
#2  0x00007ffff74843df in Core::Physical_memory::free_io_buffer (this=<optimized out>, io_mem=4313731072)
    at /home/fengggli/WorkSpace/comanche/src/lib/core/src/physical_memory.cpp:118
#3  0x000055555555ea37 in (anonymous namespace)::Core_test_MemoryAllocation_Test::TestBody (this=<optimized out>)
    at /home/fengggli/WorkSpace/comanche/src/lib/core/unit_test/test1.cpp:64
#4  0x00005555555890f1 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ()
#5  0x0000555555583097 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ()
#6  0x00005555555668d6 in testing::Test::Run() ()
#7  0x000055555556720c in testing::TestInfo::Run() ()
#8  0x0000555555567896 in testing::TestCase::Run() ()
#9  0x000055555556e762 in testing::internal::UnitTestImpl::RunAllTests() ()
#10 0x000055555558a2b7 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ()
#11 0x0000555555583ed3 in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ()
#12 0x000055555556d326 in testing::UnitTest::Run() ()
#13 0x000055555555c2ef in RUN_ALL_TESTS () at /usr/local/include/gtest/gtest.h:2233
#14 main (argc=<optimized out>, argv=<optimized out>)
    at /home/fengggli/WorkSpace/comanche/src/lib/core/unit_test/test1.cpp:104

BlockAllocator Selector for nvmestore

  • Let nvmestore use different blockallocator during factorization.
  • if blkalloc_ikv is used, the same _meta_store is used to store block allocation information

dawn integration and exception handling

Tracks the progress of dawn integration and exception handling

Notes for dawn.

Shards

  1. Call stack
    src/main.cpp -> Dawn::Shard_launcher -> multiple Dawn::Shards.

  2. memory

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.