For reference I summarized from this thread and put the results here: KNOX-1221
The write specific performance improvement is here: KNOX-1521 Kevin Risden On Wed, Oct 10, 2018 at 3:48 PM Kevin Risden <kris...@apache.org> wrote: > I tried disabling GCM ciphers based on the following information: > * https://www.wowza.com/docs/how-to-improve-ssl-performance-with-java-8 > * > https://stackoverflow.com/questions/25992131/slow-aes-gcm-encryption-and-decryption-with-java-8u20 > > The results for the read were: > * knox ssl no GCM - 1,073,741,824 125MB/s in 8.7s > * knox ssl - 1,073,741,824 54.3MB/s in 20s > > This is a little more than a 2x speedup. There is also information in the > links above that there should be more performance improvements with JDK 9+. > > For the write side slow down, I found an issue with how Knox is handing > the streaming data on writes only. I am looking into fixing this to get the > write performance for HDFS improved. > > Kevin Risden > > > On Wed, Oct 10, 2018 at 1:20 PM David Villarreal < > dvillarr...@hortonworks.com> wrote: > >> I believe Curl has an option of what cipher to use.. You may also be >> able to force it at the server jvm level using >> /jre/lib/security/java.security >> >> >> >> >> >> *From: *Sandeep Moré <moresand...@gmail.com> >> *Reply-To: *"user@knox.apache.org" <user@knox.apache.org> >> *Date: *Tuesday, October 9, 2018 at 6:39 PM >> *To: *"user@knox.apache.org" <user@knox.apache.org> >> *Subject: *Re: WebHDFS performance issue in Knox >> >> >> >> I think this would be a good test, worth a try, not sure how we can force >> a certain cipher to be used perhaps a permutation combination of >> >> ssl.include.ciphers, ssl.exclude.ciphers. >> >> >> >> Best, >> >> Sandeep >> >> >> >> >> >> On Tue, Oct 9, 2018 at 5:29 PM David Villarreal < >> dvillarr...@hortonworks.com> wrote: >> >> Hi Kevin, >> >> >> >> In my humble opinion, this has to do with cpu processing encryption in >> general based on which cipher being used. Couldn’t the same type of >> principals/improvements (hdfs encryption improvements) be done here for >> let’s say for AES cipher suites? If the main bottleneck here is CPU >> couldn’t you enhance encryption though hardware acceleration and you may >> see better performance numbers? >> >> >> >> https://calomel.org/aesni_ssl_performance.html >> >> >> >> Try forcing a less secure cipher to be used in your environment. Do you >> then see better numbers? >> >> >> >> dav >> >> >> >> >> >> >> >> >> >> >> *From:Kevin Risden <kris...@apache.org <kris...@apache.org>> Reply-To: >> "user@knox.apache.org <user@knox.apache.org>" <user@knox.apache.org >> <user@knox.apache.org>> Date: Tuesday, October 9, 2018 at 1:05 PM To: >> "user@knox.apache.org <user@knox.apache.org>" <user@knox.apache.org >> <user@knox.apache.org>> Subject: Re: WebHDFS performance issue in Knox* >> >> >> >> @David - Not sure what you mean since this is SSL/TLS and not related to >> RPC encryption like the two JIRAs that you linked. >> >> @Guang - NP just took some time to sit down and look at it. >> >> >> >> Some preliminary investigation shows this may be the JDK implementation >> of TLS/SSL that is slowing down the read path. I need to dig into it >> further but found a few references showing that Java slowness for TLS/SSL >> affects Jetty. >> >> - >> https://nbsoftsolutions.com/blog/the-cost-of-tls-in-java-and-solutions >> - >> https://nbsoftsolutions.com/blog/dropwizard-1-3-upcoming-tls-improvements >> - https://webtide.com/conscrypting-native-ssl-for-jetty/ >> >> Locally testing off a Jetty 9.4 branch (for KNOX-1516), I was able to >> enable conscrypting ( >> https://www.eclipse.org/jetty/documentation/9.4.x/configuring-ssl.html#conscrypt). >> With that I was able to get read performance on par with non ssl and native >> webhdfs. The write side of the equation still has some performance >> differences that need to be looked at further. >> >> >> Kevin Risden >> >> >> >> >> >> On Tue, Oct 9, 2018 at 2:01 PM Guang Yang <k...@uber.com> wrote: >> >> Thanks Kevin conducting such experiment! This is exactly what I saw >> before. It doesn't look right the download speed is 10x slower when >> enabling SSL. >> >> >> >> On Tue, Oct 9, 2018 at 10:40 AM David Villarreal < >> dvillarr...@hortonworks.com> wrote: >> >> I bring this up because HDFS encryption saw an increase in performance. >> >> https://issues.apache.org/jira/browse/HDFS-6606 >> >> >> >> https://issues.apache.org/jira/browse/HADOOP-10768 >> >> >> >> Maybe Knox can make some enhancements in this area? >> >> >> >> *From: *David Villarreal <dvillarr...@hortonworks.com> >> *Date: *Tuesday, October 9, 2018 at 10:34 AM >> *To: *"user@knox.apache.org" <user@knox.apache.org> >> *Subject: *Re: WebHDFS performance issue in Knox >> >> >> >> Hi Kevin, >> >> Now increase your CPU processing power and show me the numbers. >> >> >> >> Do we support AES-NI optimization with extended CPU instruction set for >> AES hardware acceleration? >> >> libcrypto.so library that supports hardware acceleration, such as >> OpenSSL 1.0.1e. (Many OS versions have an older version of the library that >> does not support AES-NI.) >> >> >> >> >> >> >> *From: * >> >> *Kevin Risden* >> >> >> >> >> >> *<kris...@apache.org <kris...@apache.org>> Reply-To: >> "user@knox.apache.org <user@knox.apache.org>" <user@knox.apache.org >> <user@knox.apache.org>> Date: Tuesday, October 9, 2018 at 10:26 AM To: >> "user@knox.apache.org <user@knox.apache.org>" <user@knox.apache.org >> <user@knox.apache.org>> Subject: Re: WebHDFS performance issue in Knox* >> >> >> >> Writes look to have performance impact as well: >> >> - directly to webhdfs - ~2.6 seconds >> - knox no ssl - ~29 seconds >> - knox ssl - ~49.6 seconds >> >> Kevin Risden >> >> >> >> >> >> On Tue, Oct 9, 2018 at 12:39 PM Kevin Risden <kris...@apache.org> wrote: >> >> If I run two downloads concurrently: >> >> >> >> 1,073,741,824 46.1MB/s in 22s >> >> 1,073,741,824 51.3MB/s in 22s >> >> >> >> So it isn't a limitation of the Knox gateway itself in total bandwidth >> but a per connection limitation somehow. >> >> >> Kevin Risden >> >> >> >> >> >> On Tue, Oct 9, 2018 at 12:24 PM Kevin Risden <kris...@apache.org> wrote: >> >> So I was able to reproduce a slowdown with SSL with a pseudo distributed >> HDFS setup on a single node with Knox running on the same node. This was >> setup in Virtualbox on my laptop. >> >> >> >> Rough timings with wget for a 1GB random file: >> >> - directly to webhdfs - 1,073,741,824 252MB/s in 3.8s >> - knox no ssl - 1,073,741,824 264MB/s in 3.6s >> - knox ssl - 1,073,741,824 54.3MB/s in 20s >> >> There is a significant decrease with Knox SSL for some reason. >> >> >> >> Kevin Risden >> >> >> >> >> >> On Sun, Sep 23, 2018 at 8:53 PM larry mccay <lmc...@apache.org> wrote: >> >> SSL handshake will likely happen at least twice. >> >> Once for the request through Knox to the NN then the redirect from the NN >> to the DN goes all the way back to the client. >> >> So they have to follow the redirect and do the handshake to the DN. >> >> >> >> >> >> On Sun, Sep 23, 2018 at 8:30 PM Kevin Risden <kris...@apache.org> wrote: >> >> So I found this in the Knox issues list in JIRA: >> >> >> >> https://issues.apache.org/jira/browse/KNOX-1221 >> >> >> >> It sounds familiar in terms of a slowdown when going through Knox. >> >> >> Kevin Risden >> >> >> >> >> >> On Sat, Sep 15, 2018 at 10:17 PM Kevin Risden <kris...@apache.org> wrote: >> >> Hmmm yea curl for a single file should do the handshake once. >> >> >> >> What are the system performance statistics during the SSL vs non SSL >> testing? CPU/memory/disk/etc? Ambari metrics with Grafana would help here >> if using that. Otherwise watching top may be helpful. It would be help to >> determine if the Knox is working harder during the SSL transfer. >> >> >> Kevin Risden >> >> >> >> >> >> On Wed, Sep 12, 2018 at 2:52 PM Guang Yang <k...@uber.com> wrote: >> >> I'm just using curl to download a single large file. So I suspect SSL >> handshake just happens once? >> >> >> >> On Tue, Sep 11, 2018 at 12:02 PM >> >> Kevin Risden >> >> <kris...@apache.org> wrote: >> >> What client are you using to connect Knox? Is this for a single file or a >> bunch of files? >> >> >> >> The SSL handshake can be slow if the client doesn't keep the connection >> open. >> >> Kevin Risden >> >> >> >> On Tue, Sep 11, 2018, 14:51 Guang Yang <k...@uber.com> wrote: >> >> Thanks Larry. But the only difference is this part in my gateway-site.xml. >> >> >> >> *<property>* >> >> * <name>ssl.enabled</name>* >> >> * <value>false</value>* >> >> * <description>Indicates whether SSL is enabled.</description>* >> >> *</property>* >> >> >> >> On Tue, Sep 11, 2018 at 11:42 AM, larry mccay <lmc...@apache.org> wrote: >> >> I really don't think that kind of difference should be expected from >> merely SSL overhead. >> >> I don't however have any metrics to contradict it either since I do not >> run Knox without SSL. >> >> >> >> Given the above, I am struggling coming up with a meaningful response to >> this. :( >> >> I don't think you should see a 10 fold increase in speed by disabling SSL >> though. >> >> >> >> On Tue, Sep 11, 2018 at 2:35 PM Guang Yang <k...@uber.com> wrote: >> >> Any idea guys? >> >> >> >> On Mon, Sep 10, 2018 at 3:07 PM, Guang Yang <k...@uber.com> wrote: >> >> Thanks guys! The issue seems exactly what David pointed out, which is >> because of encrypted over SSL. >> >> >> >> Without Knox, the download speed can reach to *400M/s* if I call >> Namenode directly. And with disabling SSL, the speed can reach to >> *~400M/s* as well through Knox. But with SSL, the speed drops >> significantly to *~40M/s*. I know it's because of encrypted, but it does >> surprised me with such a difference. Is it normal from your perspective? >> >> >> >> Thanks, >> >> Guang >> >> >> >> On Tue, Sep 4, 2018 at 11:07 AM, David Villarreal < >> dvillarr...@hortonworks.com> wrote: >> >> Hi Guang, >> >> >> >> Keep in mind the data is being encrypted over SSL. If you disable SSL >> you will most likely see a very significant boost in throughput. Some >> people have used more powerful computers to make encryption quicker. >> >> >> >> Thanks, >> >> >> >> David >> >> >> >> *From: *Sean Roberts <srobe...@hortonworks.com> >> *Reply-To: *"user@knox.apache.org" <user@knox.apache.org> >> *Date: *Tuesday, September 4, 2018 at 1:53 AM >> *To: *"user@knox.apache.org" <user@knox.apache.org> >> *Subject: *Re: WebHDFS performance issue in Knox >> >> >> >> Guang – This is somewhat to be expected. >> >> >> >> When you talk to WebHDFS directly, the client can distribute the request >> across many data nodes. Also, you are getting data directly from the source. >> >> With Knox, all traffic goes through the single Knox host. Knox is >> responsible for fetching from the datanodes and consolidating to send to >> you. This means overhead as it’s acting as a middle man, and lower network >> capacity since only 1 host is serving data to you. >> >> >> >> Also, if running on a cloud provider, the Knox host may be a smaller >> instance size with lower network capacity. >> >> -- >> >> Sean Roberts >> >> >> >> *From: *Guang Yang <k...@uber.com> >> *Reply-To: *"user@knox.apache.org" <user@knox.apache.org> >> *Date: *Tuesday, 4 September 2018 at 07:46 >> *To: *"user@knox.apache.org" <user@knox.apache.org> >> *Subject: *WebHDFS performance issue in Knox >> >> >> >> Hi, >> >> >> >> We're using Knox 1.1.0 to proxy WebHDFS request. If we download a file >> through WebHDFS in Knox, the download speed is just about 11M/s. However, >> if we download directly from datanode, the speed is about 40M/s at least. >> >> >> >> Are you guys aware of this problem? Any suggestion? >> >> >> >> Thanks, >> >> Guang >> >> >> >> >> >> >> >>