{"push_id":613013247,"size":29,"distinct_size":29,"ref":"refs/heads/master","head":"94c4a273fc026fb84ea26c8daa057e0d94b9dbdb","before":"409a93f2a32b53f4fb8fdeb4a7b4a6dd4eeaba71","commits":[{"sha":"346ac0b18498ffbdb65b72811c5d966463f708ba","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"Makefile: Streamline LuaJIT build options\n\nStrip away these options:\n\n    -DLUAJIT_USE_PERFTOOLS\n\nThis feature causes noise in /tmp (perf-nnnn.map files). There is a\nbetter way to profile at trace granularity with the LuaJIT\nprofiler. Hopefully this will be upstream in LuaJIT but for now\navailable as a patch:\nhttp://www.freelists.org/post/luajit/Profile-at-trace-granularity,1\n\n    -DLUAJIT_USE_GDBJIT\n\nThe documentation says that \"enabling it always has a non-negligible\noverhead -- do not use in release mode\" and I don't believe that we\nare using this functionality (debugging JIT traces in gdb).\n\n    -DLUAJIT_NUMMODE=3\n\nThis is less clear cut. Mike Pall has encouraged us to experiment with\nsettings for this variable for potential performance benefits. The\ncurrent value (3) was chosen during a micro-optimization spree many\nmoons ago. I am not confident whether this setting helps or is better\nthan other settings. So I am disabling it in this commit (\"less\nvoodoo\") and we will have to check for performance regressions before\nmerging onto master.","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/346ac0b18498ffbdb65b72811c5d966463f708ba"},{"sha":"f76af58d8f5acc0307d0b5d858217a7d4e81e511","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"cksum_avx2: Switch to AVX unaligned loads\n\nSimplify the code by operating on unaligned data. CPUs supporting AVX2\nhandle unaligned access very efficiently (source: Agner Fog).\n\nThe previous version of this function used a non-SIMD checksum for any\nnon-aligned data at the start of the packet. (This is still done for\nthe non-aligned part at the end, since the AVX code still operates on\nminimum 32 byte chunks.)","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/f76af58d8f5acc0307d0b5d858217a7d4e81e511"},{"sha":"90fc0113f348ba15251a1f9a0c4224706d4b27e2","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"Run in busy-loop (engine.Hz = false) by default\n\nThis will make Snabb Switch always show 100% CPU in default settings.\n\nPreviously Snabb Switch has by default attempted to bring in a batch\nof new packets once every 100us. This is too conservative on the\nstraightline design because we now work on smaller batches of\npackets (max is now 256 and was 8192 before). So this change makes the\ndefault behavior to busy-loop without sleeping to maximize throughput.\n\nGoing forwards we should consider a dynamic mechanism that will make a\ntruly idle Snabb Switch sleep. Meanwhile the default is to busy-loop\nand a static configuration is possible with a setting like\n'engine.Hz=10000'.","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/90fc0113f348ba15251a1f9a0c4224706d4b27e2"},{"sha":"8cf86ff3acb9a7b97650920b592ffab04ed5c77e","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"engine: Make link report prettier\n\nThe standard link report printout is now a little prettier: links are\nalphabetically sorted (resolves #385), punctuation is improved, and\nvalues are printed with commas and justified.\n\nBefore:\n\n    link report\n    597223954 sent on Virtio_A.tx -> NIC_A.rx (loss rate: 0%))\n    137411842 sent on NIC_A.tx -> Virtio_A.rx (loss rate: 0%))\n    597223786 sent on NIC_B.tx -> Virtio_B.rx (loss rate: 0%))\n    137411851 sent on Virtio_B.tx -> NIC_B.rx (loss rate: 0%))\n\nAfter:\n\n    link report:\n\t      17,747,602 sent on NIC_A.tx -> Virtio_A.rx (loss rate: 0%)\n\t      70,955,552 sent on NIC_B.tx -> Virtio_B.rx (loss rate: 0%)\n\t      70,955,729 sent on Virtio_A.tx -> NIC_A.rx (loss rate: 0%)\n\t      17,747,621 sent on Virtio_B.tx -> NIC_B.rx (loss rate: 0%)","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/8cf86ff3acb9a7b97650920b592ffab04ed5c77e"},{"sha":"e942aa0f39218298bcd516f7c429f37b4c878da5","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"core.memory: Replace mlockall() with on-demand mlock()\n\nSnabb Switch previously called mlockall() to force all memory in the\nprocess address space to be locked to its physical location. This made\nit possible to use all memory for DMA, including memory mapped from\nvirtual machines.\n\nThis had several side-effects:\n\n* Prevent Snabb Switch from being swapped out. (Nice?)\n* Prevent VMs that we serve from being swapped out. (Overkill?)\n* Requires root permissions at startup. (Overkill?)\n\nThe new behavior is to individually mlock() the HugeTLB pages that we\nallocate for DMA. The rest of the memory - Snabb Switch and VMs - is\nleft unlocked. This is feasible now that we only do DMA within this\nmemory. This also allows us to defer the root-privileged system call\nuntil we need DMA memory, which may not happen for ceratin\napplications.","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/e942aa0f39218298bcd516f7c429f37b4c878da5"},{"sha":"487873ceae5a46e12019c52228f14d65087c3edd","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"core.packet: Don't allocate packets at module-load time\n\nWait until the first packet is needed to allocate the memory.","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/487873ceae5a46e12019c52228f14d65087c3edd"},{"sha":"25f97c654d6411eb373c0963ec6b82e82344b708","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"core.main: Don't insist on starting as root\n\nCertain Snabb programs don't require root permissions. The ones that\ndo will need to check for them when system calls fail unexpectedly.","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/25f97c654d6411eb373c0963ec6b82e82344b708"},{"sha":"51519c53e02925468634b28fcb89fa5a3c9e888a","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"memory/pci: Explicitly check for root access when needed\n\nUse ljsyscall's geteuid() via a new library function:\n\n    lib.root_check()","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/51519c53e02925468634b28fcb89fa5a3c9e888a"},{"sha":"6759f0121e86dfef0b809550bcd0e681d5f05194","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"snabbnfv: Improve --help usage printouts\n\nAdded proper usage for neutron-sync-master and neutron-sync-agent.\n\nCreated separate usage commands for traffic: -h/--help prints command\nline usage, -H/--long-help also prints the configuration file format.","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/6759f0121e86dfef0b809550bcd0e681d5f05194"},{"sha":"122bfa752d073ad709534f7a568b0048a010f89a","author":{"email":"828c1a17681e8566a17a1a4801ea67306010b273@guerrag.com","name":"Javier Guerra"},"message":"new function checksum.verify_packet() takes an IP packet (not the whole ethernet frame) and returns true if successufly checks header (if aplicable) and data.","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/122bfa752d073ad709534f7a568b0048a010f89a"},{"sha":"c809291923f2f8eeda216c4ce849d3eafe8725f1","author":{"email":"828c1a17681e8566a17a1a4801ea67306010b273@guerrag.com","name":"Javier Guerra"},"message":"if we can check the incoming packet, tell the VM not to bother checking again.","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/c809291923f2f8eeda216c4ce849d3eafe8725f1"},{"sha":"3dec599f2ce7cabba26d75e24fc8ed7986d28feb","author":{"email":"828c1a17681e8566a17a1a4801ea67306010b273@guerrag.com","name":"Javier Guerra"},"message":"optimization: move the ntohs() to the end of the sums","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/3dec599f2ce7cabba26d75e24fc8ed7986d28feb"},{"sha":"482f89e633086838c8d5ae427ff66e50360fd136","author":{"email":"828c1a17681e8566a17a1a4801ea67306010b273@guerrag.com","name":"Javier Guerra"},"message":"return a single value, not a structure\n\nIt's faster to return a single value from C to Lua, even if that means recalculating the other one.","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/482f89e633086838c8d5ae427ff66e50360fd136"},{"sha":"48b172196897ece6df8f8fec8ae0fdff4a6846a8","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"Merge PR #389 to integration branch","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/48b172196897ece6df8f8fec8ae0fdff4a6846a8"},{"sha":"fb867d83ae9a25f8b2b281de9eca779ecc2dff62","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"Merge PR #414 to integration branch","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/fb867d83ae9a25f8b2b281de9eca779ecc2dff62"},{"sha":"ae0ff06e845488c963952835507153f7ecdc99a2","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"Merge PR #415 to integration branch","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/ae0ff06e845488c963952835507153f7ecdc99a2"},{"sha":"629e905e1e6875e5930268982893685d4b3689c9","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"Merge PR #417 to integration branch","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/629e905e1e6875e5930268982893685d4b3689c9"},{"sha":"fa2b1d1b62f46fd22bba68df4d5f6e14ca3b0935","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"Merge PR #416 to integration branch","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/fa2b1d1b62f46fd22bba68df4d5f6e14ca3b0935"},{"sha":"5ab533648a193cbef590511ac163dbb0d78acf38","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"Merge PR #418 to integration branch","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/5ab533648a193cbef590511ac163dbb0d78acf38"},{"sha":"bdc7be7459df17d8343f6863678905e331b8a28a","author":{"email":"6b3799be4300e44489a08090123f3842e6419da5@snabb.co","name":"Luke Gorrie"},"message":"snabbnfv traffic: Fix command-line argument parsing\n\nThe optional arguments (only -B) were treated as positional arguments.","distinct":true,"url":"https://api.github.com/repos/SnabbCo/snabbswitch/commits/bdc7be7459df17d8343f6863678905e331b8a28a"}]}