[
https://issues.apache.org/jira/browse/STORM-1336?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15122948#comment-15122948
]
ASF GitHub Bot commented on STORM-1336:
---------------------------------------
Github user vesense commented on a diff in the pull request:
https://github.com/apache/storm/pull/1053#discussion_r51225510
--- Diff:
storm-core/src/jvm/org/apache/storm/container/cgroup/SystemOperation.java ---
@@ -0,0 +1,70 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.storm.container.cgroup;
+
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+public class SystemOperation {
+
+ public static final Logger LOG =
LoggerFactory.getLogger(SystemOperation.class);
+
+ public static boolean isRoot() throws IOException {
+ String result = SystemOperation.exec("echo $EUID").substring(0, 1);
+ return Integer.valueOf(result.substring(0,
result.length())).intValue() == 0 ? true : false;
+ };
+
+ public static void mount(String name, String target, String type,
String data) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ sb.append("mount -t ").append(type).append(" -o
").append(data).append(" ").append(name).append(" ").append(target);
+ SystemOperation.exec(sb.toString());
+ }
+
+ public static void umount(String name) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ sb.append("umount ").append(name);
+ SystemOperation.exec(sb.toString());
+ }
+
+ public static String exec(String cmd) throws IOException {
+ LOG.debug("Shell cmd: {}", cmd);
+ Process process = new ProcessBuilder(new String[] { "/bin/bash",
"-c", cmd }).start();
+ try {
+ process.waitFor();
+ String output = IOUtils.toString(process.getInputStream());
+ String errorOutput =
IOUtils.toString(process.getErrorStream());
+ LOG.debug("Shell Output: {}", output);
+ if (errorOutput.length() != 0) {
+ LOG.error("Shell Error Output: {}", errorOutput);
+ throw new IOException(errorOutput);
+ }
+ return output;
+ } catch (InterruptedException ie) {
+ throw new IOException(ie.toString());
+ }
+
+ }
+
+ public static void main(String[] args) throws IOException {
+ SystemOperation.mount("test", "/cgroup/cpu", "cgroup", "cpu");
--- End diff --
Maybe we can add some unit Tests for CGroups and remove the `main` method
code.
> Evalute/Port JStorm cgroup support
> ----------------------------------
>
> Key: STORM-1336
> URL: https://issues.apache.org/jira/browse/STORM-1336
> Project: Apache Storm
> Issue Type: New Feature
> Components: storm-core
> Reporter: Robert Joseph Evans
> Assignee: Boyang Jerry Peng
> Labels: jstorm-merger
>
> Supports controlling the upper limit of CPU core usage for a worker using
> cgroups
> Sounds like a good start, will be nice to integrate it with RAS requests too.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)