Research --> fault prediction/avoidance จะสนใจใน fault
--> runtime verification สนใจในพฤติกรรมที่นำไปสู่ failure
เพราะ failure สามารถหลีกเลี่ยงได้ แม้จะเกิด fault ขึ้น
1.งานพวก Runtime verification มีจุดประสงค์เดียวกัน แต่ต่างกระบวนการสร้างกฏที่เกิดขึ้น
เช่น สร้าง specification จากไดอะแกรมต่าง ๆ สร้างจากการเรียนรู้ สร้างจาก code เป็นต้น
ซึ่งจำเป็นต้องรู้ event ที่ทำให้ state ปกติ และ event ที่ทำให้ state ไม่ปกติ
2. งาน fault prediction ที่ใช้ ฺBN
- ใช้จำนวน method call, จำนวนบรรทัดของโค้ดใน method และอื่นๆ เป็นพารามิเตอร์ สำหรับ BN ในการเรียนรู้
- ใช้ attribute ของระบบ เช่น
redundancy --> รอขยายความ
constrained-ness --> รอขยายความ
personnel turnover --> รอขยายความ
- วิเคราะห์ algorithm แล้วนำมา combine เพื่อทำนาย error แต่ใช้ระดับที่สูงกว่าข้อมูลจากโปรแกรม
- นำเสนอการเรียนรู้และวิเคราะห์หาสาเหตุของการเกิด failure แต่ใช้กับ CPU usage
- ใช้ model และ algorithm เพื่อวิเคราะห์หา trace log และทำนาย root cause (งานนี้ใช้เครื่องมือต่าง จุดประสงค์ต่าง)
การจะกำหนด event หรือ behavior ต้องรู้ relationship
relationship เก็บได้จาก sources(document, specification, expert) or การเรียนรู้
sources(document, specification, expert) or การเรียนรู้
|
|
V
relationship
|
|
V
event หรือ behavior
***
งานของกวาง ใช้ Bayesian Network เพื่อสร้าง rule จาก behavior ของโปรแกรม เพื่อจับ failure และหลีกเลี่ยงก่อนที่เหตุการณ์จะเกิดขึ้น
โดย BN เรียนรู้ความสัมพันธ์ และความน่าจะเป็น (ใช้ WEKA)จาก log ของตัวแปร แล้วจึงสร้างกฏขึ้นมา
1. Data collection ใช้การ instrument code และเพิ่มตัวแปร "colliding" เพื่อเก็บ track ของ state ที่นิยามเอาไว้ว่าจะเกิด failure (ข้อสังเกตส่วนของการเพิ่มตัวแปรมีผลต่อการทำงานของโปรแกรมหรือไม่)
เก็บเพื่อเอาไปเป็นพารามิเตอร์ในการเรียนรู้
2. ใช้ BN เรียนรู้ว่า event ไหนที่จะนำไปสู่การเกิด failure
3.evaluation ทดสอบประสิทธิภาพของความสัมพันธ์ที่ได้
4. สร้าง rule (ใช้ IF-THEN)
Tuesday, April 21, 2015
ความต่างของ fault กับ failure
failure คือ ส่วนประกอบของพฤติกรรมของระบบ ที่ต่างไปจากพฤติกรรมที่ต้องการ
fault คือ เงื่อนไขที่ถ้าเกิดขึ้นแล้ว จะทำให้ระบบหรือส่วนของระบบทำงานล้มเหลว
(ส่วนที่นิยามเพิ่มเติม ก็คือ เป็น root cause ของ failure)
- ถ้ามีพฤติกรรมที่เกิดขึ้นต่างจากที่ต้องการ = failure
- state ที่ไม่ปกติ = failure
fault คือ เงื่อนไขที่ถ้าเกิดขึ้นแล้ว จะทำให้ระบบหรือส่วนของระบบทำงานล้มเหลว
(ส่วนที่นิยามเพิ่มเติม ก็คือ เป็น root cause ของ failure)
- ถ้ามีพฤติกรรมที่เกิดขึ้นต่างจากที่ต้องการ = failure
- state ที่ไม่ปกติ = failure
Wednesday, October 31, 2012
ตัวอย่างโค้ดที่ใช้ ExecutorService
Example using ExecutorService:
public class TaskThreader {
class DoStuff implements Callable {
Object in;
public Object call(){
in = doStep1(in);
in = doStep2(in);
in = doStep3(in);
return in;
}
public DoStuff(Object input){
in = input;
}
}
public abstract Object doStep1(Object input);
public abstract Object doStep2(Object input);
public abstract Object doStep3(Object input);
public static void main(String[] args) throws Exception {
ExecutorService exec = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
ArrayList<Callable> tasks = new ArrayList<Callable>();
for(Object input : inputs){
tasks.add(new DoStuff(input));
}
List<Future> results = exec.invokeAll(tasks);
exec.shutdown();
for(Future f : results) {
write(f.get());
}
}
}
โค้ดของคุณคนนี้ >> http://stackoverflow.com/users/95122/bobmcgee
- ExecutorService อยู่ใน package ของ java.util.concurrent
-
Runtime.getRuntime().availableProcessors() << อันนี้น่าสนใจ ทำให้เรียกหมายเลขจาก pool (รึป่าว อิอิ)
ดูอีกทีจ้ะ http://stackoverflow.com/questions/1223072/how-do-i-optimize-for-multi-core-and-multi-cpu-computers-in-java
Hyper Threading คืออะไร
Hyper Threading จะทำให้ซอฟท์แวร์สามารถใช้ ซีพียูเสมือนมี 2 ซีพียูใน 1 ซีพียูจริง โดยจากมุมมองของซอฟท์แวร์ จะหมายถึงระบบปฏิบัติการและโปรแกรมจะสามารถกำหนดให้โปรเซสหรือเทรดหลายเทรดไปที่โปรเซสเซอร์หลายๆ ตัวเสมือนเครื่องคอมพิวเตอร์เครื่องนั้นมีซีพียูหลายๆตัว เลยทีเดียว และถ้ามองจากมุมของสถาปัตยกรรมคอมพิวเตอร์มันจะหมายถึงการสามารถทำ instructions จาก logical processors ทั้งสองตัวโดยใช้ทรัพยากรในการทำงานร่วมกันได้
(อันนี้ ลอกมาจาก http://httwww.vcharkarn.com/vblog/115394/1)
แล้ว core 2 duo ไม่เห็นเป็นซีพียู 2 ตัวหรอ .. เฮ้องง
(อันนี้ ลอกมาจาก http://httwww.vcharkarn.com/vblog/115394/1)
แล้ว core 2 duo ไม่เห็นเป็นซีพียู 2 ตัวหรอ .. เฮ้องง
ความแตกต่าง ของ cpu (intel)
ความแตกต่าง ของ cpu (intel)
*Dual Core มี 2core cpu ตัวเดียว รองรับ multitask (พูดง่าย ๆ ก็มี 2 แกน)
*Core Duo นั้นจะเป็นการ เอา หน่วยประมวลผล 2 ตัวมารวมเข้าด้วยกัน บนชิพ 1 ตัว มี L2 เป็นของตัวใครตัวมัน
*Core 2 Duo นั้น มีหลักการคล้าย ๆ กับ Core Duo แต่รวมเอา L2 ไว้ด้วยกัน
*Core i3 ก็มี 2 แกน เหมือน Core 2 Duo
Core 2 Duo และ Core i3 เป็น CPU แบบ Dual-Core เหมือนกัน
แต่ Core i3 มี 2 core 4 threads
, Core i5 มี 4 core 4 threads,
Core i7 มี 4 core 8 threads
จะย้าย ตัว Memory Controller รวมเข้าไปในตัว CPU
มีผลทำให้ CPU ติดต่อกับ RAM และ VGA ได้รวดเร็วมากขึ้น
core i3 มี Hyper Threading
core 2 duo ไม่มี Hyper Threading
เออแน่ะ แล้วทีนี้ ไอ้เจ้า core i3 กับ core 2 duo มี 2 คอ เหมือนกันแล้วมันต่างกันยังไงล่ะเนี่ย :D
*Dual Core มี 2core cpu ตัวเดียว รองรับ multitask (พูดง่าย ๆ ก็มี 2 แกน)
*Core Duo นั้นจะเป็นการ เอา หน่วยประมวลผล 2 ตัวมารวมเข้าด้วยกัน บนชิพ 1 ตัว มี L2 เป็นของตัวใครตัวมัน
*Core 2 Duo นั้น มีหลักการคล้าย ๆ กับ Core Duo แต่รวมเอา L2 ไว้ด้วยกัน
*Core i3 ก็มี 2 แกน เหมือน Core 2 Duo
Core 2 Duo และ Core i3 เป็น CPU แบบ Dual-Core เหมือนกัน
แต่ Core i3 มี 2 core 4 threads
, Core i5 มี 4 core 4 threads,
Core i7 มี 4 core 8 threads
จะย้าย ตัว Memory Controller รวมเข้าไปในตัว CPU
มีผลทำให้ CPU ติดต่อกับ RAM และ VGA ได้รวดเร็วมากขึ้น
core i3 มี Hyper Threading
core 2 duo ไม่มี Hyper Threading
เออแน่ะ แล้วทีนี้ ไอ้เจ้า core i3 กับ core 2 duo มี 2 คอ เหมือนกันแล้วมันต่างกันยังไงล่ะเนี่ย :D
Subscribe to:
Posts (Atom)