顏晨陽
摘 要:ACLab是一種基于docker集群的輕量級自動評價虛擬命令行實驗作業(yè)終端。ACLab允許教師通過非常簡單的步驟定制可自動評分的類unix系統(tǒng)終端實驗,定制實驗可以隨機化,確保每個學生的任務(wù)不盡相同。學生則可以如同在真實機器上一樣進行操作完成實驗,并獲得實時反饋。ACLab使用基于瀏覽器的終端仿真器通過WebSockets連接到Docker容器,性能測試及表明它足以處理大量并發(fā)用戶,同時調(diào)查顯示:使用ACLab教師對于ACLab對于減輕實驗環(huán)境部署和實驗批改工作量十分有效,使用學生對于ACLab可用性和實用性也相當認同。
關(guān)鍵詞:虛擬終端;自動評價;命令行;實驗教學
一、簡介
終端或命令行通常是指操作系統(tǒng)基于文本的用戶界面。在終端中鍵入命令即可訪問程序、執(zhí)行操作。用戶可以執(zhí)行簡單的任務(wù),但也可以構(gòu)造更復雜的命令來執(zhí)行效率低下的手動操作。在類Unix系統(tǒng)中,終端或者命令行幾乎是開發(fā)和運維人員與系統(tǒng)的唯一交互界面。
在本文中,我們構(gòu)建了一種基于docker[1]集群的可定制和自動評估作業(yè)的虛擬命令行實驗系統(tǒng):ACLab,并將其用于類Unix系統(tǒng)教學。在設(shè)計ACLab時,我們有四個主要目標:
(1)平臺應提供真實的終端體驗,學習者可以探索機器的當前狀態(tài)并使用許多可能的策略來完成實驗,而不是僅僅檢查學習者是否鍵入了特定的命令。
(2)平臺應具有足夠的靈活性,以支持各種終端分配,還應支持隨機化,以便可以為每個學生提供獨特的問題實例,以防止學習者共享解決方案。
(3)平臺應具有高可用性并可以適當擴展,以防止濫用和資源耗盡,而不受用戶操作的影響。
(4)學習者應該以方便,獨立于平臺的方式訪問終端作業(yè),最好通過與學生用于其他在線課程平臺的界面相同的界面進行訪問。
ACLab通過組合包括Docker容器,WebSocket和瀏覽器內(nèi)終端仿真器[2]在內(nèi)的一系列現(xiàn)有技術(shù)來實現(xiàn)上述目標。使用ACLab,學習者無需安裝任何客戶端,使用瀏覽器就可以連接到實時系統(tǒng)的真實,有效的終端,并在其中完成實驗,如圖1所示。
本文的具體結(jié)構(gòu)描述如下:
(1)在第二節(jié)中闡述了ACLab服務(wù)器的設(shè)計,包括其對容器生命周期的管理以及如何將其集成到有代表性的在線課程界面中。
(2)在第三節(jié)中我們展示了若干調(diào)查統(tǒng)計結(jié)果,其中包括學習者使用ACLab的體驗以及ACLab對于實驗教學效率的提升。
(3)在第四節(jié)中,我們展示了ACLab的性能結(jié)果,結(jié)果表明ACLab具有足夠的彈性,可用于中大型規(guī)模(1000人)的在線課程中。
二、設(shè)計與實現(xiàn)
我們下面描述的ACLab的實現(xiàn)是嵌入在Prairie Learn[3]在線課程平臺中,該平臺系統(tǒng)用于部署授課過程中的其他任務(wù)。ACLab系統(tǒng)由三個部分組成,如圖2所示:
(1)ACLab服務(wù)器,負責分配任務(wù)Docker容器實例及其管理服務(wù)器上Docker容器的生命周期。
(2)PrairieLearn服務(wù)器端,負責生成任務(wù)描述文檔并在記錄實驗作業(yè)完成情況。
(3)PrairieLearn客戶端(基于瀏覽器),用于用戶與ACLab服務(wù)器及其容器之間的交互。
構(gòu)建在線實驗始于用戶對新問題的請求,接收到請求后,PrairieLearn服務(wù)器首先將構(gòu)建構(gòu)建實驗任務(wù)描述文檔。該描述文檔包括對ACLab服務(wù)器應如何初始化Docker容器的描述,包括應創(chuàng)建哪些文件和目錄、在將容器控制權(quán)轉(zhuǎn)移給用戶之前要執(zhí)行的命令。為了使每個用戶分配到的在線實驗任務(wù)不完全一樣,會隨機更改文件的名稱和內(nèi)容以及目錄的名稱和層次結(jié)構(gòu)。在PrairieLearn客戶端使用Gotty來作為終端仿真器,同時用JavaScript構(gòu)建一些額外代碼來實現(xiàn)客戶端與ACLab其他簡單交互功能,如評分、重置、分數(shù)保存等等。ACLab通過使用“任務(wù)完成校驗字符串”來檢查用戶的任務(wù)完成情況。采用“任務(wù)完成校驗字符串”是由于希望將ACLab服務(wù)器與PrairieLearn松散耦合?!叭蝿?wù)完成校驗字符串”對于每個用戶的每個任務(wù)來說都是唯一的,并作為任務(wù)描述文檔的一部分提供給容器。PrairieLearn客戶端界面也包括“重置”按鈕。當按下時,客戶端將通知ACLab服務(wù)器強制清除任務(wù)關(guān)聯(lián)容器資源,并重復發(fā)送任務(wù)描述文檔給ACLab服務(wù)器來重建任務(wù)。如果一個任務(wù)在規(guī)定時間內(nèi)未能完成,ACLab服務(wù)器也將清除與該任務(wù)關(guān)聯(lián)的任何資源。
三、實驗結(jié)果
在2018年和2019年第2學期中,ACLab部署在阿里云ecs.c6.large實例上,被用于某高職計算機網(wǎng)絡(luò)專業(yè)的《Linux系統(tǒng)管理》課程。分別有122和163名學生使用ACLab。總共35個任務(wù),包括目錄導航、列出和刪除、文件復制、移動、重命名和刪除、隱藏文件、文件修改時間、通配符、grep,tar和zip文件、、查找、管道、vim應用、軟件安裝、查找、更新和卸載、進程查看、終止、服務(wù)查看、啟動和停止。學生完成任務(wù)平均每次約需5分鐘。我們在每個學期都對于學生進行了一項關(guān)于ACLab應用效果的調(diào)查,在3.1中進行了介紹。在3.2中給出了一項系統(tǒng)壓力測試結(jié)果,來確定ACLab可伸縮性瓶頸。
(一)學生調(diào)查結(jié)果
我們要求學生在完成學期35個ACLab的終端任務(wù)之后,以1到5(非常不認同、不認同、部分認同、認同、非常認同)的等級對ACLab平臺不同方面進行評估,該調(diào)查是在線進行的,在285名學生中,共有222名學生參加了調(diào)查,有效回收問卷220份。問題羅列如下:(1)您是否認同ACLab平臺操作的實用性(與實際系統(tǒng)命令行操作是否相同);(2)您是否認同AClab平臺易用性(上手快);(3)您是否認同AClab平臺性能效率(不卡頓);(4)您是否認同AClab平臺教學功能(評分是否準確)。所有受訪者中,我們看到用戶對ACLab平臺操作的實用性有很高的評價(圖3A,avg:4.57,std dev:0.22),證明ACLab平臺與實際系統(tǒng)命令行操作一致性很高。學生對ACLab的平臺易用性同樣滿意(圖3B,avg:4.37,std dev:0.67),表示ACLab界面明了,容易上手。對于ACLab性能效率評價則有所保留(圖3C,avg:3.63,std dev:.99),這主要是因為ACLab部署在在一個性能有限的阿里云實例中,如果能夠部署在一個較高新能的實例中,情況會有所好轉(zhuǎn)。對于ACLab平臺教學功能認同率仍有提升空間。(圖3D,avg:3.75,std dev:1.11)。
(二)性能壓力測試
為了觀察服務(wù)器在受控負載下的行為,我們進行了一次壓力測試,要求所有專業(yè)學生學生同時訪問其終端任務(wù)。涉及大約約400個并發(fā)用戶,這些用戶通過運行在阿里云ecs.c6.large實例上的ACLab服務(wù)器完成分配。在這兩個測試中,容器構(gòu)建延遲平均和中值都增加到10秒左右,這是可以忍受的,并且一旦創(chuàng)建了容器,終端就沒有明顯的延遲。我們認為,在稍微性能高一些的阿里云計算型實例(4vCPU,16GiB)上部署ACLab就足以滿足千人以上的并發(fā)訪問。使用性能監(jiān)控器collectl[5]在ACLab主機上收集的數(shù)據(jù)表明,壓力測試僅顯著影響了CPU利用率。內(nèi)存使用量僅增加了幾百兆字節(jié),而網(wǎng)絡(luò)使用率可以忽略不計。
四、結(jié)論
ACLab的實施方式表明,可以以可擴展和安全的方式構(gòu)建針對終端技能的認證。ACLab使教師有機會在他們的課程和考試中添加基于終端實踐內(nèi)容,能夠與現(xiàn)有系統(tǒng)兼容,同時不會過多地增加教師的工作量。但是,仍有一些工作要做。首先,改善ACLab的教學功能,簡化其判分流程。第二,拓展ACLab的兼容性,使其能夠兼容更多的教學平臺,最后提示ACLab的效率,嘗試在大規(guī)模在線課程中使用ACLab。
參考文獻:
[1]Docker.https://www.docker.com/.Accessed:2018-04-02.
[2]hterm.https://chromium.googlesource.com/apps/libapps/+/master/hterm.Accessed:2018-04-01.
[3]Matthew West,Geoffrey L.Herman,and Craig Zilles.2015.PrairieLearn:Mastery-based online problem solving with adaptive scoring and recommendations driven by machine learning.In 2015 ASEE Annual Conference & Exposition.ASEE Conferences,Seattle,Washington.
[4]Fiona Fui-Hoon Nah.2004.A study on tolerable waiting time:how long are Web users willing to wait? Behaviour & Information Technology 23,3(2004):153-163.
[5]Mark Seger.collectl.http://collectl.sourceforge.net/.Accessed:2018-04-02.