-
Notifications
You must be signed in to change notification settings - Fork 28.9k
[SPARK-21603][SQL][FOLLOW-UP] Change the default value of maxLinesPerFunction into 4000 #19021
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
I'll check performance changes in TPC-DS. |
|
Got the numbers and see them here. The numbers seems to be the almost same with the master just before #18810 merged. @gatorsmile @viirya |
|
Also, I talked with @viirya here and |
|
Test build #80976 has finished for PR 19021 at commit
|
| "The default value 4000 is the max length of byte code JIT supported " + | ||
| "for a single function(8000) divided by 2.") | ||
| .intConf | ||
| .createWithDefault(2667) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you also try 2731 and 2049? and see the perf difference?
8K = 8192
8192 / 3 + 1 = 2731
8192 / 2 + 1 = 4097
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've already checked 2800; this value activated too-long-function optimization in Q17/Q66 and Q66 had regression. So, I think 2731 and 2049 possibly have the same regression (I've also checked 2900 that disabled this in Q17/Q66).
btw, why the computation is based on 8K? It seems the threshold of DontCompileHugeMethods is 8000?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
YES.... Just double check it. The default of HugeMethodLimitis 8000... Thanks!
|
LGTM |
|
cc @rednaxelafx |
|
Thanks! Merging to master. |
|
Just for your info, again, I looked into this issue in TPC-DS quries; I added some code to check the actual bytecode size of these quries and I found the gen'd function in Q17/Q66 only had too-long bytecode over BTW, why we don't check if gen'd bytecode size is over |
|
@maropu Should be a good idea. Especially the number of lines of code may not be intuitive to set for this purpose. |
What changes were proposed in this pull request?
This pr changed the default value of
maxLinesPerFunctioninto4000. In #18810, we had this new option to disable code generation for too long functions and I found this option only affectedQ17andQ66in TPC-DS. But,Q66had some performance regression:To keep the previous performance in TPC-DS, we better set higher value at
maxLinesPerFunctionby default.How was this patch tested?
Existing tests.