Skip to content

Commit e8ad9e6

Browse files
nlu90freeznet
authored andcommitted
optimize jvm parameters (#708)
* optimize jvm parameters * check style * update # Conflicts: # controllers/spec/common.go # controllers/spec/sink.go # controllers/spec/source.go
1 parent 3334e64 commit e8ad9e6

File tree

3 files changed

+26
-12
lines changed

3 files changed

+26
-12
lines changed

controllers/spec/common.go

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import (
4040
autov2 "k8s.io/api/autoscaling/v2"
4141
v1 "k8s.io/api/batch/v1"
4242
corev1 "k8s.io/api/core/v1"
43-
"k8s.io/apimachinery/pkg/api/resource"
4443
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
4544
"k8s.io/apimachinery/pkg/util/intstr"
4645
"k8s.io/client-go/kubernetes/scheme"
@@ -336,14 +335,14 @@ func makePodTemplate(container *corev1.Container, filebeatContainer *corev1.Cont
336335
}
337336
}
338337

339-
func MakeJavaFunctionCommand(downloadPath, packageFile, name, clusterName, generateLogConfigCommand, logLevel, details, memory, extraDependenciesDir, uid string,
338+
func MakeJavaFunctionCommand(downloadPath, packageFile, name, clusterName, generateLogConfigCommand, logLevel, details, extraDependenciesDir, uid string,
340339
javaOpts []string, hasPulsarctl, hasWget, authProvided, tlsProvided bool, secretMaps map[string]v1alpha1.SecretRef,
341340
state *v1alpha1.Stateful,
342341
tlsConfig TLSConfig, authConfig *v1alpha1.AuthConfig,
343342
maxPendingAsyncRequests *int32, logConfigFileName string) []string {
344343
processCommand := setShardIDEnvironmentVariableCommand() + " && " + generateLogConfigCommand +
345344
strings.Join(getProcessJavaRuntimeArgs(name, packageFile, clusterName, logLevel, details,
346-
memory, extraDependenciesDir, uid, javaOpts, authProvided, tlsProvided, secretMaps, state, tlsConfig,
345+
extraDependenciesDir, uid, javaOpts, authProvided, tlsProvided, secretMaps, state, tlsConfig,
347346
authConfig, maxPendingAsyncRequests, logConfigFileName), " ")
348347
if downloadPath != "" && !utils.EnableInitContainers {
349348
// prepend download command if the downPath is provided
@@ -1070,7 +1069,7 @@ func setShardIDEnvironmentVariableCommand() string {
10701069
return fmt.Sprintf("%s=${POD_NAME##*-} && echo shardId=${%s}", EnvShardID, EnvShardID)
10711070
}
10721071

1073-
func getProcessJavaRuntimeArgs(name, packageName, clusterName, logLevel, details, memory, extraDependenciesDir, uid string,
1072+
func getProcessJavaRuntimeArgs(name, packageName, clusterName, logLevel, details, extraDependenciesDir, uid string,
10741073
javaOpts []string, authProvided, tlsProvided bool, secretMaps map[string]v1alpha1.SecretRef,
10751074
state *v1alpha1.Stateful,
10761075
tlsConfig TLSConfig, authConfig *v1alpha1.AuthConfig,
@@ -1103,7 +1102,12 @@ func getProcessJavaRuntimeArgs(name, packageName, clusterName, logLevel, details
11031102
"-Dpulsar.function.log.dir=logs/functions",
11041103
"-Dpulsar.function.log.file=" + fmt.Sprintf("%s-${%s}", name, EnvShardID),
11051104
setLogLevel,
1106-
"-Xmx" + memory,
1105+
"-XX:InitialRAMPercentage=20",
1106+
"-XX:MaxRAMPercentage=40",
1107+
"-XX:+UseG1GC",
1108+
"-XX:+HeapDumpOnOutOfMemoryError",
1109+
"-XX:HeapDumpPath=/pulsar/tmp/heapdump-%p.hprof",
1110+
"-Xlog:gc*:file=/pulsar/logs/gc.log:time,level,tags:filecount=5,filesize=10M",
11071111
strings.Join(javaOpts, " "),
11081112
"org.apache.pulsar.functions.instance.JavaInstanceMain",
11091113
"--jar",
@@ -1851,12 +1855,22 @@ func getPythonSecretProviderArgs(secretMaps map[string]v1alpha1.SecretRef) []str
18511855
return ret
18521856
}
18531857

1854-
// Java command requires memory values in resource.DecimalSI format
1855-
func getDecimalSIMemory(quantity *resource.Quantity) string {
1856-
if quantity.Format == resource.DecimalSI {
1857-
return quantity.String()
1858+
func getGenericSecretProviderArgs(secretMaps map[string]v1alpha1.SecretRef, language string) []string {
1859+
var ret []string
1860+
if len(secretMaps) > 0 {
1861+
if language == "python" {
1862+
ret = []string{
1863+
"--secrets_provider",
1864+
"secrets_provider.EnvironmentBasedSecretsProvider",
1865+
}
1866+
} else if language == "nodejs" {
1867+
ret = []string{
1868+
"--secrets_provider",
1869+
"EnvironmentBasedSecretsProvider",
1870+
}
1871+
}
18581872
}
1859-
return resource.NewQuantity(quantity.Value(), resource.DecimalSI).String()
1873+
return ret
18601874
}
18611875

18621876
func getTLSTrustCertPath(tlsVolume TLSConfig, path string) string {

controllers/spec/sink.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ func MakeSinkCommand(sink *v1alpha1.Sink) []string {
212212
generateJavaLogConfigCommand(spec.Java, spec.LogTopicAgent),
213213
parseJavaLogLevel(spec.Java),
214214
generateSinkDetailsInJSON(sink),
215-
getDecimalSIMemory(spec.Resources.Requests.Memory()), spec.Java.ExtraDependenciesDir, string(sink.UID),
215+
spec.Java.ExtraDependenciesDir, string(sink.UID),
216216
spec.Java.JavaOpts, hasPulsarctl, hasWget, spec.Pulsar.AuthSecret != "", spec.Pulsar.TLSSecret != "",
217217
spec.SecretsMap, spec.StateConfig, spec.Pulsar.TLSConfig, spec.Pulsar.AuthConfig, nil,
218218
generateJavaLogConfigFileName(spec.Java))

controllers/spec/source.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func makeSourceCommand(source *v1alpha1.Source) []string {
159159
generateJavaLogConfigCommand(spec.Java, spec.LogTopicAgent),
160160
parseJavaLogLevel(spec.Java),
161161
generateSourceDetailsInJSON(source),
162-
getDecimalSIMemory(spec.Resources.Requests.Memory()), spec.Java.ExtraDependenciesDir, string(source.UID),
162+
spec.Java.ExtraDependenciesDir, string(source.UID),
163163
spec.Java.JavaOpts, hasPulsarctl, hasWget, spec.Pulsar.AuthSecret != "", spec.Pulsar.TLSSecret != "",
164164
spec.SecretsMap, spec.StateConfig, spec.Pulsar.TLSConfig, spec.Pulsar.AuthConfig, nil,
165165
generateJavaLogConfigFileName(spec.Java))

0 commit comments

Comments
 (0)