You need to sign in or sign up before continuing.
- May 28, 2014
-
-
Pekka Enberg authored
This separates Capstan and VM image building into two scripts. This is needed to be able to drop useless VM images like "osv-base" or "osv-openjdk" that only make sense as Capstan base images, not standalone VM images that people boot to. Cc: Tzach Livyatan <tzach@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Raphael S. Carvalho authored
Signed-off-by:
Raphael S. Carvalho <raphaelsc@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Pawel Dziepak authored
Signed-off-by:
Pawel Dziepak <pdziepak@quarnos.org> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Pawel Dziepak authored
Reviewed-by:
Tomasz Grabiec <tgrabiec@gmail.com> Signed-off-by:
Pawel Dziepak <pdziepak@quarnos.org> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Pawel Dziepak authored
Reviewed-by:
Tomasz Grabiec <tgrabiec@gmail.com> Signed-off-by:
Pawel Dziepak <pdziepak@quarnos.org> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Pawel Dziepak authored
Reviewed-by:
Tomasz Grabiec <tgrabiec@gmail.com> Signed-off-by:
Pawel Dziepak <pdziepak@quarnos.org> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Pawel Dziepak authored
Signed-off-by:
Pawel Dziepak <pdziepak@quarnos.org> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Pawel Dziepak authored
Reviewed-by:
Tomasz Grabiec <tgrabiec@gmail.com> Signed-off-by:
Pawel Dziepak <pdziepak@quarnos.org> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Asias He authored
This is needed to run iperf3. https://github.com/cloudius-systems/osv/issues/305 Signed-off-by:
Asias He <asias@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Dmitry Fleytman authored
Avoid using X.509 keypair because it became deprecated and not generally available to person doing release. Signed-off-by:
Dmitry Fleytman <dmitry@daynix.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Avi Kivity authored
This reverts commit f9311884. The fpu vulnerabilities have been fixed (202b2ccc, d9addd0b), so fpu-based memcpy should work now. Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
Vlad Zolotarov authored
Signed-off-by:
Vlad Zolotarov <vladz@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Dmitry Fleytman authored
getpeername() is required by iperf in client mode without it iperf crashes as following: [/]% run /tools/iperf.so -c 10.0.0.144 Failed looking up symbol getpeername [backtrace] 0x00000000003326a2 <elf::object::resolve_pltgot(unsigned int)+82> 0x0000000000369b42 <__elf_resolve_pltgot+46> 0x0000100004207535 <Client::Client(thread_Settings*)+301> 0x0000100004208b44 <client_spawn+50> 0x000010000421323a <thread_stop+272> 0x0000000000412ca5 <sync+69> 0x00000000003b2eea <thread_main_c+26> 0x000000000036ae95 <thread_main+7> Signed-off-by:
Dmitry Fleytman <dmitry@daynix.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Vlad Zolotarov authored
try_xmit_one_locked(net_req*) doesn't return EINVAL anymore. The appropriate code has moved to xmit_prep(). Signed-off-by:
Vlad Zolotarov <vladz@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Avi Kivity authored
Implement facades for rwlock so it can be used with WITH_LOCK, specifying whether we want a read lock or a write lock: rwlock my_rwlock; WITH_LOCK(my_rwlock.for_read()) { read stuff } WITH_LOCK(my_rwlock.for_write()) { write stuff } Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
Avi Kivity authored
elf_resolve_pltgot() can be called from anywhere, including with dirty fpu state. Ensure the fpu is not clobbered during its execution. Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
Avi Kivity authored
Since we cannot guarantee that the fpu will not be used in interrupts and exceptions, we must save it earlier rather than later. This was discovered with an fpu-based memcpy, but can be triggered in other ways. Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
Tomasz Grabiec authored
The summary will only include samples within the specified range. Timed samples will be trimmed to the given time range. Requested-by:
Glauber Costa <glommer@cloudius-systems.com> Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- May 27, 2014
-
-
Raphael S. Carvalho authored
When using 'zpool.so import' fdopendir symbol is missed. Code taken from musl libc. Additional details: fcntl(fd, F_SETFD, FD_CLOEXEC) call was removed as the close-on-exec flag is left unchanged on Linux (Glauber Costa). Also removing struct __DIR_s definition from fs/vfs/main.c, and referencing the new one added into libc/dirent/dirent.h. Reviewed-by:
Glauber Costa <glommer@cloudius-systems.com> Signed-off-by:
Raphael S. Carvalho <raphaelsc@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Pekka Enberg authored
The code in <api/x86/reloc.h> is not used. Avi says it's dead code that originates fro Musl. Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com> Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
https://github.com/gleb-cloudius/osvAvi Kivity authored
"Nothing spectacular here, just making msync() pagecache aware. Reduces code size a bit if nothing else" Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
Pawel Dziepak authored
R_X86_64_DPTMOD64 may not be associated with any symbol (which is common when the linker uses local dynamic TLS mode) in which case it should be resovled to the index of the current module. Signed-off-by:
Pawel Dziepak <pdziepak@quarnos.org> Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
Gleb Natapov authored
Not all pages in the write page cache are dirty sync msync() may write some of them back. Check for that and do not write back clean pages needlessly. Signed-off-by:
Gleb Natapov <gleb@cloudius-systems.com>
-
Gleb Natapov authored
This will allow pagecache code to atomically clear pte and check for a dirty bit. Signed-off-by:
Gleb Natapov <gleb@cloudius-systems.com>
-
Gleb Natapov authored
Current msync implementation is scanning all pages in msync are via pagetables to find dirty pages, but pagecache already knows what pages are potentially dirty for given file/offsets, so it is can check if they are dirty via rmap. Signed-off-by:
Gleb Natapov <gleb@cloudius-systems.com>
-
Gleb Natapov authored
As Avi pointed ptep_flush and ptep_accessed classes can be replaced by general map-reduce mechanism with customizable map and reduce functions. The patch implements that. Signed-off-by:
Gleb Natapov <gleb@cloudius-systems.com>
-
Raphael S. Carvalho authored
The problem was the flag D_TTY, meaning that device is TTY, not being passed to device_create. Signed-off-by:
Raphael S. Carvalho <raphaelsc@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Avi Kivity authored
This reverts commit 2da050a4 - apparently we're calling memcpy() in a non-safe path. Revert for now. Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
- May 26, 2014
-
-
Nadav Har'El authored
Fix a missing include to allow tst-mmap.cc to be compiled on Linux, and add in a comment the (far from obvious) command line needed to compile it. Signed-off-by:
Nadav Har'El <nyh@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Glauber Costa authored
The man page for raise says: In a single-threaded program it is equivalent to kill(getpid(), sig); In a multithreaded program it is equivalent to pthread_kill(pthread_self(), sig); In our case we should mimic the second. It is a good question then whether this function should be in a more generic place or in pthread.cc itself, but I will argue for the second, since it will make it easier for people to notice that this is what our implementation does. Of course at this moment pthread_kill is stubbed and so is raise. But if we ever implement the first, we gain the later for free. Signed-off-by:
Glauber Costa <glommer@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Glauber Costa authored
Code from musl. Signed-off-by:
Glauber Costa <glommer@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Glauber Costa authored
We already have the ffs function, ffsl and ffsll are easy from here. Theoretically, a_ctz_l should do the job here as well since we're 64 all over, but I found a_ctz_64 safer. Signed-off-by:
Glauber Costa <glommer@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Glauber Costa authored
Similar to pipe, but taking flags. We will ignore exec related flags. Signed-off-by:
Glauber Costa <glommer@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Glauber Costa authored
This is mainly a wrapper around fcntl, so it should work to the extent that fcntl works and fail gracefully where it doesn't. Code is imported from musl with some modifications to allow it to compile as C++ code. Signed-off-by:
Glauber Costa <glommer@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Glauber Costa authored
Note that we don't allocate memory in sem_init: we are using placement new to just construct the object over an already existing memory location. Therefore, all we need to do is release our unique_ptr Thanks Pawel for noticing we need to release memory of the internal semaphore Signed-off-by:
Glauber Costa <glommer@cloudius-systems.com> Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
Avi Kivity authored
Copy < 256 bytes without any loops; 16 bytes and above use sse to reduce instruction count. Signed-off-by:
Avi Kivity <avi@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Avi Kivity authored
Simple power of two is too easy. Signed-off-by:
Avi Kivity <avi@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
https://github.com/tgrabiec/osvAvi Kivity authored
"The main improvement is in the last patch which removes contention inside free_different_cpu() on sync._mtx. It improves my micro-benchmark by ~30%." Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
Tomasz Grabiec authored
Fixes #308. When the per-cpu-pair ring fills up, the freeing thread is blocked and enters a synchronous object hand-off. That synchronous hand-off is cause of contention. Instead of having a bounded ring we can use an unordered_queue_mpsc which links the freed objects in a chain. In this implementation push() always succeeds and we don't need to block. In a test which allocates 1K blocks on once CPU and having two threads freeing them on two other CPUs, there is a ~40% improvement of free() throughput. I tested various implementaions, based on different queues. Statistics of free/sec reported by misc-free-perf (one sample = one run): current: avg = 8133055.09 stdev = 118322.06 samples = 5 ring_spsc<1M> (no blocking): avg = 10442665.98 stdev = 476334.93 samples = 5 unordered_queue_spsc: avg = 10258212.69 stdev = 418194.22 samples = 5 unordered_queue_mpsc: avg = 11701334.99 stdev = 725299.97 samples = 5 Testing showed that unordered_queue_mpsc() performs best in this case. Dead objects are collected by per-CPU worker thread (same as before). The thread is woken up once every 256 frees. That threshold was chosen so that the behavior would more or less correspond to what was before. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com>
-
Tomasz Grabiec authored
There is one allocating threads and two freeing threads. Each thread is allocated on a different core. The test measures throughput of objects freed by both threads. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com>
-