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> Reply-To: "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> 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<mailto: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<mailto: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<mailto:dvillarr...@hortonworks.com>> Date: Tuesday, October 9, 2018 at 10:34 AM To: "user@knox.apache.org<mailto:user@knox.apache.org>" <user@knox.apache.org<mailto: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<mailto:kris...@apache.org>> Reply-To: "user@knox.apache.org<mailto:user@knox.apache.org>" <user@knox.apache.org<mailto:user@knox.apache.org>> Date: Tuesday, October 9, 2018 at 10:26 AM To: "user@knox.apache.org<mailto:user@knox.apache.org>" <user@knox.apache.org<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto:k...@uber.com>> wrote: Any idea guys? On Mon, Sep 10, 2018 at 3:07 PM, Guang Yang <k...@uber.com<mailto: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<mailto: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<mailto:srobe...@hortonworks.com>> Reply-To: "user@knox.apache.org<mailto:user@knox.apache.org>" <user@knox.apache.org<mailto:user@knox.apache.org>> Date: Tuesday, September 4, 2018 at 1:53 AM To: "user@knox.apache.org<mailto:user@knox.apache.org>" <user@knox.apache.org<mailto: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<mailto:k...@uber.com>> Reply-To: "user@knox.apache.org<mailto:user@knox.apache.org>" <user@knox.apache.org<mailto:user@knox.apache.org>> Date: Tuesday, 4 September 2018 at 07:46 To: "user@knox.apache.org<mailto:user@knox.apache.org>" <user@knox.apache.org<mailto: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