The toolchain I'm using is listed like that :
cmake 3.7.1,
gcc 4.8.5 (also used 4.8.2, same error),
ragel 6.9,
Python 2.7.13,
boost 1.62.0,
pcap 1.8.1
hyperscan 4.3.2
The data what I am scanning is captured by tcpdump (the pcap file is about 40GB), and my patterns only have eight http methods (GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE, CONNECT). BTW, I use block mode of hyperscan. After I optimized the code and using "-O2" gcc compile option, my newest test performance is about 882Mbps.

Best regards,

On Tue, Jan 3, 2017 at 7:25 AM, Barr, Matthew <> wrote:
From: Hyperscan [] on behalf of Datong Li []
Sent: Friday, December 30, 2016 3:12 PM

> Hi all, had anyone encounter this problem like me below:
> [root@XXXX hs_build]# cmake --build .
> /usr/bin/make64 MAC=64
> Scanning dependencies of target ragel_Parser
> [  0%] Generating src/parser/Parser.cpp
> [  0%] Built target ragel_Parser
> Scanning dependencies of target hs_exec
> [  0%] Building C object CMakeFiles/hs_exec.dir/src/alloc.c.o
> [  1%] Building C object CMakeFiles/hs_exec.dir/src/runtime.c.o
> /tmp/ccoj8u4q.s: Assembler messages:
> /tmp/ccoj8u4q.s:460: Error: no such instruction: `vpbroadcastb %xmm2,%xmm2'
> /tmp/ccoj8u4q.s:470: Error: no such instruction: `vpbroadcastb %xmm3,%xmm3'

I've replied to the github issue about this - it appears there is a problem with your toolchain. The compiler and assembler do not match, GCC is producing asm that the assembler doesn't understand. This can happen with a newer GCC and an old version of binutils, for example.

> when I forbidden the instruction set avx and bmi2, then it could complete the compilation, but the hyperscan 's performance is just about 500Mb/s, it's really long distance with the official numbers. I doubt that it maybe relate with theinstruction sets.

It is hard to comment on the performance you are seeing without knowing how you are getting those numbers. Can you comment on the type of patterns you are using, and the data you are scanning?



With best regards, 
Datong Li