1Title: Microkernel Object Performance 2 3Description: 4 5AppKernel is used to measure the performance of microkernel events, mutexes, 6semaphores, FIFOs, mailboxes, pipes, memory maps, and memory pools. 7 8-------------------------------------------------------------------------------- 9 10Building and Running Project: 11 12This project outputs to the console. It can be built and executed 13on QEMU as follows: 14 15 make run 16 17-------------------------------------------------------------------------------- 18 19Troubleshooting: 20 21Problems caused by out-dated project information can be addressed by 22issuing one of the following commands then rebuilding the project: 23 24 make clean # discard results of previous builds 25 # but keep existing configuration info 26or 27 make pristine # discard results of previous builds 28 # and restore pre-defined configuration info 29 30-------------------------------------------------------------------------------- 31 32Sample Output: 33 34|-----------------------------------------------------------------------------| 35| S I M P L E S E R V I C E M E A S U R E M E N T S | nsec | 36|-----------------------------------------------------------------------------| 37|-----------------------------------------------------------------------------| 38| enqueue 1 byte msg in FIFO | NNNNNN| 39| dequeue 1 byte msg in FIFO | NNNNNN| 40| enqueue 4 bytes msg in FIFO | NNNNNN| 41| dequeue 4 bytes msg in FIFO | NNNNNN| 42| enqueue 1 byte msg in FIFO to a waiting higher priority task | NNNNNN| 43| enqueue 4 bytes in FIFO to a waiting higher priority task | NNNNNN| 44|-----------------------------------------------------------------------------| 45| signal semaphore | NNNNNN| 46| signal to waiting high pri task | NNNNNN| 47| signal to waiting high pri task, with timeout | NNNNNN| 48| signal to waitm (2) | NNNNNN| 49| signal to waitm (2), with timeout | NNNNNN| 50| signal to waitm (3) | NNNNNN| 51| signal to waitm (3), with timeout | NNNNNNN| 52| signal to waitm (4) | NNNNNNN| 53| signal to waitm (4), with timeout | NNNNNNN| 54|-----------------------------------------------------------------------------| 55| average lock and unlock mutex | NNNNNN| 56|-----------------------------------------------------------------------------| 57| average alloc and dealloc memory page | NNNNNN| 58|-----------------------------------------------------------------------------| 59| average alloc and dealloc memory pool block | NNNNNN| 60|-----------------------------------------------------------------------------| 61| Signal enabled event | NNNNNN| 62| Signal event & Test event | NNNNNN| 63| Signal event & TestW event | NNNNNN| 64| Signal event with installed handler | 65| Handler responds OK | 66|-----------------------------------------------------------------------------| 67| M A I L B O X M E A S U R E M E N T S | 68|-----------------------------------------------------------------------------| 69| Send mailbox message to waiting high priority task and wait | 70| repeat for 128 times and take the average | 71|-----------------------------------------------------------------------------| 72| size(B) | time/packet (nsec) | KB/sec | 73|-----------------------------------------------------------------------------| 74| N| NNNNNN| N| 75| N| NNNNNN| NN| 76| NN| NNNNNN| NN| 77| NN| NNNNNN| NN| 78| NN| NNNNNN| NN| 79| NNN| NNNNNN| NNN| 80| NNN| NNNNNN| NNN| 81| NNN| NNNNNN| NNN| 82| NNNN| NNNNNNN| NNN| 83| NNNN| NNNNNNN| NNNN| 84| NNNN| NNNNNNN| NNNN| 85| NNNN| NNNNNNN| NNNN| 86|-----------------------------------------------------------------------------| 87| message overhead: NNNNNN nsec/packet | 88| raw transfer rate: NNNN KB/sec (without overhead) | 89|-----------------------------------------------------------------------------| 90| P I P E M E A S U R E M E N T S | 91|-----------------------------------------------------------------------------| 92| Send data into a pipe towards a receiving high priority task and wait | 93|-----------------------------------------------------------------------------| 94| matching sizes (_ALL_N) | 95|-----------------------------------------------------------------------------| 96| size(B) | time/packet (nsec) | KB/sec | 97|-----------------------------------------------------------------------------| 98| put | get | no buf | small buf| big buf | no buf | small buf| big buf | 99|-----------------------------------------------------------------------------| 100| N| N| NNNNNNN| NNNNNNN| NNNNNNN| N| N| N| 101| NN| NN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NN| 102| NN| NN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NN| 103| NN| NN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NN| 104| NNN| NNN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NN| 105| NNN| NNN| NNNNNNN| NNNNNNN| NNNNNNN| NNN| NNN| NNN| 106| NNN| NNN| NNNNNNN| NNNNNNN| NNNNNNN| NNN| NNN| NNN| 107| NNNN| NNNN| NNNNNNN| NNNNNNN| NNNNNNN| NNN| NNN| NNN| 108| NNNN| NNNN| NNNNNNN| NNNNNNN| NNNNNNN| NNN| NNN| NNN| 109| NNNN| NNNN| NNNNNNN| NNNNNNN| NNNNNNN| NNNN| NNNN| NNNN| 110|-----------------------------------------------------------------------------| 111| non-matching sizes (1_TO_N) to higher priority | 112|-----------------------------------------------------------------------------| 113| size(B) | time/packet (nsec) | KB/sec | 114|-----------------------------------------------------------------------------| 115| put | get | no buf | small buf| big buf | no buf | small buf| big buf | 116|-----------------------------------------------------------------------------| 117| N| NNNN| NNNNNNN| NNNNNNN| NNNNNNN| N| N| N| 118| NN| NNNN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NN| 119| NN| NNNN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NN| 120| NN| NNN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NN| 121| NNN| NNN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NN| 122| NNN| NNN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NN| 123| NNN| NN| NNNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NN| 124| NNNN| NN| NNNNNNNN| NNNNNNNN| NNNNNNNN| NN| NN| NN| 125| NNNN| NN| NNNNNNNNN| NNNNNNNNN| NNNNNNNNN| NN| NN| NN| 126| NNNN| N| NNNNNNNNN| NNNNNNNNN| NNNNNNNNN| N| N| N| 127|-----------------------------------------------------------------------------| 128| non-matching sizes (1_TO_N) to lower priority | 129|-----------------------------------------------------------------------------| 130| size(B) | time/packet (nsec) | KB/sec | 131|-----------------------------------------------------------------------------| 132| put | get | no buf | small buf| big buf | no buf | small buf| big buf | 133|-----------------------------------------------------------------------------| 134| N| NNNN| NNNNNNN| NNNNNN| NNNNNN| N| N| N| 135| NN| NNNN| NNNNNNN| NNNNNNN| NNNNNN| NN| NN| NN| 136| NN| NNNN| NNNNNNN| NNNNNNN| NNNNNN| NN| NN| NN| 137| NN| NNN| NNNNNNN| NNNNNNN| NNNNNN| NN| NN| NN| 138| NNN| NNN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NNN| 139| NNN| NNN| NNNNNNN| NNNNNNN| NNNNNNN| NN| NN| NNN| 140| NNN| NN| NNNNNNNN| NNNNNNNN| NNNNNNN| NN| NN| NNN| 141| NNNN| NN| NNNNNNNN| NNNNNNNN| NNNNNNN| NN| NN| NNN| 142| NNNN| NN| NNNNNNNNN| NNNNNNNNN| NNNNNNN| NN| N| NNN| 143| NNNN| N| NNNNNNNNN|NNNNNNNNNN| NNNNNNN| N| N| NNNN| 144|-----------------------------------------------------------------------------| 145| END OF TESTS | 146|-----------------------------------------------------------------------------| 147PROJECT EXECUTION SUCCESSFUL 148