Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 07636200C44 for ; Mon, 13 Mar 2017 01:40:20 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 05FC9160B87; Mon, 13 Mar 2017 00:40:20 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 4D7DA160B77 for ; Mon, 13 Mar 2017 01:40:19 +0100 (CET) Received: (qmail 23101 invoked by uid 500); 13 Mar 2017 00:40:18 -0000 Mailing-List: contact commits-help@mesos.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@mesos.apache.org Delivered-To: mailing list commits@mesos.apache.org Received: (qmail 23092 invoked by uid 99); 13 Mar 2017 00:40:18 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 13 Mar 2017 00:40:18 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 67FB4DFBDA; Mon, 13 Mar 2017 00:40:18 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: klueska@apache.org To: commits@mesos.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: mesos git commit: Added ability to dynamically load '/dev/nvidia-uvm' in GPU isolator. Date: Mon, 13 Mar 2017 00:40:18 +0000 (UTC) archived-at: Mon, 13 Mar 2017 00:40:20 -0000 Repository: mesos Updated Branches: refs/heads/1.2.x a7e647017 -> 801cdfac6 Added ability to dynamically load '/dev/nvidia-uvm' in GPU isolator. Review: https://reviews.apache.org/r/57539/ Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/801cdfac Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/801cdfac Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/801cdfac Branch: refs/heads/1.2.x Commit: 801cdfac64fba8eaa09ec715e5631999c5c4f98e Parents: a7e6470 Author: Kevin Klues Authored: Sun Mar 12 17:25:40 2017 -0700 Committer: Kevin Klues Committed: Sun Mar 12 17:34:26 2017 -0700 ---------------------------------------------------------------------- .../containerizer/mesos/isolators/gpu/isolator.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/801cdfac/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp b/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp index a3b9fe7..d4ab539 100644 --- a/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp +++ b/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp @@ -157,6 +157,23 @@ Try NvidiaGpuIsolatorProcess::create( deviceEntries[Path("/dev/nvidiactl")] = entry; + // The `nvidia-uvm` module is not typically loaded by default on + // systems that have Nvidia GPU drivers installed. Instead, + // applications that require this module use `nvidia-modprobe` to + // load it dynamically on first use. This program both loads the + // `nvidia-uvm` kernel module and creates the corresponding + // `/dev/nvidia-uvm` device that it controls. + // + // We call `nvidia-modprobe` here to ensure that `/dev/nvidia-uvm` + // is properly created so we can inject it into any containers that + // may require it. + if (!os::exists("/dev/nvidia-uvm")) { + Try modprobe = os::shell("nvidia-modprobe -u -c 0"); + if (modprobe.isError()) { + return Error("Failed to load '/dev/nvidia-uvm': " + modprobe.error()); + } + } + device = os::stat::rdev("/dev/nvidia-uvm"); if (device.isError()) { return Error("Failed to obtain device ID for '/dev/nvidia-uvm': " +