1. 26 Jun, 2015 1 commit
  2. 25 Jun, 2015 1 commit
  3. 01 Jun, 2015 1 commit
  4. 20 May, 2015 1 commit
  5. 29 Apr, 2015 1 commit
  6. 03 Apr, 2015 5 commits
    • Kirill Smelkov's avatar
      Prepare to benchmark python code with py.test · bcab1246
      Kirill Smelkov authored
      For this, a small wrapper over py.test is developed (to discover/collect
      functions to benchmar, etc) and then it runs such functions several
      times in a boxed enveronment.
      
      Benchmarks should be named bench_*.py
      bcab1246
    • Kirill Smelkov's avatar
      bigfile/virtmem: Userspace Virtual Memory Manager · 9a293c2d
      Kirill Smelkov authored
      Does similar things to what kernel does - users can mmap file parts into
      address space and access them read/write. The manager will be getting
      invoked by hardware/OS kernel for cases when there is no page loaded for
      read, or when a previousle read-only page is being written to.
      
      Additionally to features provided in kernel, it support to be used to
      store back changes in transactional way (see fileh_dirty_writeout()) and
      potentially use huge pages for mappings (though this is currently TODO)
      9a293c2d
    • Kirill Smelkov's avatar
      Script to run compiled linux kernel with root fs mounted from host · 76d8f76d
      Kirill Smelkov authored
      Useful to debug (via either printk or gdb) the kernel - one can boot it,
      and tweak compile test program on host and be ready to test it inside
      qemu on tested kernel. Another use case is to add tracing printk to
      kernel and to boot it on each iteration. Booting via qemu means the
      workflow is not disrupted as would with rebooting the hardware.
      
      With this tool it was straightforward to find out why mmap-alias through
      mremap does not work for huge pages:
      
      static struct vm_area_struct *vma_to_resize(unsigned long addr,
              unsigned long old_len, unsigned long new_len, unsigned long *p)
      {
              struct mm_struct *mm = current->mm;
              struct vm_area_struct *vma = find_vma(mm, addr);
      
              if (!vma || vma->vm_start > addr)
                      goto Efault;
      
              if (is_vm_hugetlb_page(vma))            <--
                      goto Einval;
      
      mremap_to(...)
      {
              /* lots of checks, then */
              vma_to_resize(...)
      76d8f76d
    • Kirill Smelkov's avatar
      bigfile: RAM subsystem · 8c935a5f
      Kirill Smelkov authored
      This thing allows to get aliasable RAM from OS kernel and to manage it.
      Currently we get memory from a tmpfs mount, and hugetlbfs should also
      work, but is TODO because hugetlbfs in the kernel needs to be improved.
      
      We need aliasing because we'll need to be able to memory map the same
      page into several places in address space, e.g. for taking two slices
      overlapping slice of the same array at different times.
      
      Comes with test programs that show we aliasing does not work for
      anonymous memory.
      8c935a5f
    • Kirill Smelkov's avatar
      Low-level pagefault handler · 6f7d4d64
      Kirill Smelkov authored
      We hook into SIGSEGV and handle read/write pagefaults this way.
      
      In this patch there goes stub code that only detects faults and
      determines (in arch specific way) whether fault was for read or write
      and there is a TODO to pass that information to higher level.
      
      It also comes with tests to detect we still crash if we access something
      incorrectly, so people could have coredumps and investigate them.
      6f7d4d64