Unit Test Virtualization - Psl.cs.columbia.edu

1y ago
2 Views
2 Downloads
1.49 MB
97 Pages
Last View : 1m ago
Last Download : 3m ago
Upload by : Sabrina Baez
Transcription

rFokmeonubthGiUnit Test Virtualizationwith VMVMJonathan Bell and Gail KaiserColumbia UniversityICSE 2014@ jon bellJune 5, 2014

Good news: We have tests!No judgement on whether they are complete or not,but we sure have a lot of themNumber of testsICSE 2014Apache Tomcat1,734Closure Compiler7,949Commons I/O1,022@ jon bellJune 5, 2014

Bad news: We have to run alot of tests!ICSE 2014@ jon bellJune 5, 2014

Bad news: We have to run alot of tests! Much work has focused on improving the situation: Test Suite Prioritization ICSE 2014E.g. Wong [ISSRE ’97], Rothermel [ICSM ’99]; Elbaum[ICSE ’01]; Srivastava [ISSTA ’02] and more@ jon bellJune 5, 2014

Bad news: We have to run alot of tests! Much work has focused on improving the situation: Test Suite Prioritization E.g. Wong [ISSRE ’97], Rothermel [ICSM ’99]; Elbaum[ICSE ’01]; Srivastava [ISSTA ’02] and moreTest Suite Minimization ICSE 2014E.g. Harrold [TOSEM ’93]; Wong [ICSE ’95]; Chen [IST’98]; Jones [TOSEM ’03]; Tallam [PASTE ’05]; Jeffrey[TSE ’07]; Orso [ICSE ’09] Hao [ICSE ’12] and more@ jon bellJune 5, 2014

Testing still takes too long.ICSE 2014@ jon bellJune 5, 2014

Our Approach:Unit Test VirtualizationICSE 2014@ jon bellJune 5, 2014

Our Approach:Unit Test VirtualizationReduces test execution time by up to 97%, on average 62%ICSE 2014@ jon bellJune 5, 2014

Our Approach:Unit Test VirtualizationReduces test execution time by up to 97%, on average 62%Apache Tomcat: From 26 minutes to 18 minutesICSE 2014@ jon bellJune 5, 2014

Our Approach:Unit Test VirtualizationReduces test execution time by up to 97%, on average 62%Apache Tomcat: From 26 minutes to 18 minutesIntegrates with JUnit, ant, and mvn on unmodified JVMs.ICSE 2014@ jon bellJune 5, 2014

Our Approach:Unit Test VirtualizationReduces test execution time by up to 97%, on average 62%Apache Tomcat: From 26 minutes to 18 minutesIntegrates with JUnit, ant, and mvn on unmodified JVMs.Available on GitHubICSE 2014@ jon bellJune 5, 2014

JUnit Test ExecutionStart Test SuiteStart JVMTerminate AppBegin TestExecute TestICSE 2014@ jon bellJune 5, 2014

JUnit Test ExecutionStart Test SuiteStart JVMTerminate AppBegin TestExecute TestICSE 2014@ jon bellJune 5, 2014

JUnit Test ExecutionStart Test SuiteStart JVMTerminate AppBegin TestExecute Test1.4 sec (combined)!For EVERY test!ICSE 2014@ jon bellJune 5, 2014

JUnit Test ExecutionStart JVMTerminateAppOverheadofrestartingtheJVM?Start Test SuiteBegin TestExecute Test1.4 sec (combined)!For EVERY test!ICSE 2014@ jon bellJune 5, 2014

JUnit Test ExecutionStart JVMTerminateAppOverheadofrestartingtheJVM?Start Test SuiteBegin TestUnit tests as fast as3-5msExecute Test1.4 sec (combined)!For EVERY test!ICSE 2014@ jon bellJune 5, 2014

JUnit Test ExecutionStart JVMTerminateAppOverheadofrestartingtheJVM?Start Test SuiteBegin TestUnit tests as fast as3-5msExecute TestJVM startup time is fairly constant (1.4 sec)1.4 sec (combined)!For EVERY test!ICSE 2014@ jon bellJune 5, 2014

JUnit Test ExecutionStart JVMTerminateAppOverheadofrestartingtheJVM?Start Test SuiteBegin TestUnit tests as fast as3-5msExecute TestJVM startup time is fairly constant (1.4 sec)1.4 sec (combined)!For EVERY test!Up to 4,153%, avg 618%*From our study of 20 popular FOSS appsICSE 2014@ jon bellJune 5, 2014

Do applications really use anew JVM for each test? Checked out the 1,000 largest Java projects from Ohloh 81% of projects with more than 1,000 tests do it 71% of projects with more than 1 million LOC do it Overall: 41% of all of the projects doICSE 2014@ jon bellJune 5, 2014

Test Independence We typically assume that tests are orderindependentICSE 2014@ jon bellJune 5, 2014

Test Independence We typically assume that tests are orderindependent Might rely on developers to completely reset thesystem under test between tests ICSE 2014Who tests the tests?@ jon bellJune 5, 2014

Test Independence We typically assume that tests are orderindependent Might rely on developers to completely reset thesystem under test between tests Who tests the tests?Dangerous: If wrong, can have false positives orfalse negatives (Muşlu [FSE ’11], Zhang [ISSTA’14])ICSE 2014@ jon bellJune 5, 2014

Test ed.#*/#public#static#boolean#ALLOW EQUALS IN VALUE# e.tomcat.#####util.http.ServerCookie.ALLOW EQUALS IN VALUE","false"))#########.booleanValue();ICSE 2014@ jon bellJune 5, 2014

Test IndependenceThis field is set once, when the class that owns it is d.#*/#public#static#boolean#ALLOW EQUALS IN VALUE# e.tomcat.#####util.http.ServerCookie.ALLOW EQUALS IN VALUE","false"))#########.booleanValue();ICSE 2014@ jon bellJune 5, 2014

Test IndependenceThis field is set once, when the class that owns it is d.#*/#public#static#boolean#ALLOW EQUALS IN VALUE# e.tomcat.#####util.http.ServerCookie.ALLOW EQUALS IN VALUE","false"))#########.booleanValue();This field’s value is dependent on an external propertyICSE 2014@ jon bellJune 5, 2014

A Tale of Two Testspublic#static#boolean#ALLOW EQUALS IN VALUE# #Boolean.valueOf(## ServerCookie.## ALLOW EQUALS IN alueICSE 2014TestDontAllowEqualsInValue@ jon bellJune 5, 2014

A Tale of Two Testspublic#static#boolean#ALLOW EQUALS IN VALUE# #Boolean.valueOf(## ServerCookie.## ALLOW EQUALS IN alueTestDontAllowEqualsInValueSets environmental variable to trueStart Tomcat, run testICSE 2014@ jon bellJune 5, 2014

A Tale of Two Testspublic#static#boolean#ALLOW EQUALS IN VALUE# #Boolean.valueOf(## ServerCookie.## ALLOW EQUALS IN alueTestDontAllowEqualsInValueSets environmental variable to trueStart Tomcat, run testICSE 2014Sets environmental variable to falseStart Tomcat, run test@ jon bellJune 5, 2014

A Tale of Two Testspublic#static#boolean#ALLOW EQUALS IN VALUE# #Boolean.valueOf(## ServerCookie.## ALLOW EQUALS IN alueTestDontAllowEqualsInValueSets environmental variable to trueStart Tomcat, run testSets environmental variable to falseStart Tomcat, run testBut our static field is stuck!ICSE 2014@ jon bellJune 5, 2014

A Tale of Two Testspublic#static#boolean#ALLOW EQUALS IN VALUE# #Boolean.valueOf(## ServerCookie.## ALLOW EQUALS IN alueTestDontAllowEqualsInValueSets environmental variable to trueStart Tomcat, run testICSE 2014Sets environmental variable to falseStart Tomcat, run test@ jon bellJune 5, 2014

Our ApproachUnit Test Virtualization: Allow tests to leave side-effects.But efficiently contain them.ICSE 2014@ jon bellJune 5, 2014

How do Tests Leak Data?Java is memory-managed, and object orientedWe think in terms of object graphsICSE 2014@ jon bellJune 5, 2014

How do Tests Leak Data?Java is memory-managed, and object orientedWe think in terms of object graphsTest RunnerInstanceICSE 2014@ jon bellJune 5, 2014

How do Tests Leak Data?Java is memory-managed, and object orientedWe think in terms of object graphsTest RunnerInstancesecnerrefeTest Case 1escnerrefeAccessible!ObjectsICSE 2014@ jon bellJune 5, 2014

How do Tests Leak Data?Java is memory-managed, and object orientedWe think in terms of object graphsTest RunnerInstancesecnerrefeTest Case 1escnerrefeAccessible!ObjectsICSE 2014escnerrefeTest Case 2escnerrefeAccessible!Objects@ jon bellJune 5, 2014

How do Tests Leak Data?Java is memory-managed, and object orientedWe think in terms of object graphsTest RunnerInstancesecneerrefTest Case 1escnerrefeAccessible!ObjectsICSE 2014referencesescnerrefeTest Case 2escnerrefeAccessible!Objects@ jon bellTest Case nescnerrefeAccessible!ObjectsJune 5, 2014

How do Tests Leak Data?Java is memory-managed, and object orientedWe think in terms of object graphsTest RunnerInstancesecneerrefTest Case 1refereescnerrefeTest Case 2Accessible!ObjectsNo cross-talkICSE 2014Test Case efeAccessible!ObjectsNo cross-talk@ jon bellJune 5, 2014

How do Tests Leak Data?Java is memory-managed, and object orientedWe think in terms of object graphsClass#AClass#BStatic#FieldsStatic#FieldsICSE 2014Static fields: owned by aclass, NOT by an instance@ jon bellJune 5, 2014

How do Tests Leak Data?Java is memory-managed, and object orientedWe think in terms of object graphsClass#AClass#BStatic fields: owned by aclass, NOT by an instanceStatic#FieldsStatic#FieldsThese are leakage pointsrefereferenrencceICSE 2014ess@ jon bellJune 5, 2014

Isolating Side EffectsICSE sStatic#FieldsTest 1Test 2@ jon bellJune 5, 2014

Isolating Side tic#FieldsWritesClass%ATest 1ICSE 2014Test 2@ jon bellJune 5, 2014

Isolating Side tic#FieldsWritesClass%ATest 1ICSE 2014sRdeaTest 2@ jon bellJune 5, 2014

Isolating Side ldsTest 1ICSE 2014sRdeaWritesClass%BWritesClass%ATest 2@ jon bellJune 5, 2014

Isolating Side tic#FieldsTest 1ICSE 2014sRdeaReadsWritesClass%BWritesClass%ATest 2@ jon bellJune 5, 2014

Isolating Side eldsStatic&FieldsTest 1ICSE t 2@ jon bellJune 5, 2014

Isolating Side tic&FieldsTest 1ICSE t 2@ jon bellJune 5, 2014

Isolating Side tic&FieldsTest 1ICSE t 2@ jon bellJune 5, 2014

Isolating Side tic&FieldsTest 1ICSE t 2@ jon bellThese classes had nopossible conflictsSo, don’t touch them!June 5, 2014

Isolating Side EffectsClass%BClass%AClass%CKey Insight:!NoStatic&theentireFieldsStatic&need Fieldsto re-initializeStatic&applicationFields inorderTest 1ICSE 2014sRdeaReadsWritesrc*InteWriteseption*to isolate testsTest 2@ jon bellThese classes had nopossible conflictsSo, don’t touch them!June 5, 2014

VMVM: Unit Test Virtualization Isolates in-memory side effects, just like restartingJVMICSE 2014@ jon bellJune 5, 2014

VMVM: Unit Test Virtualization Isolates in-memory side effects, just like restartingJVM Integrates easily with ant, maven, junitICSE 2014@ jon bellJune 5, 2014

VMVM: Unit Test Virtualization Isolates in-memory side effects, just like restartingJVM Integrates easily with ant, maven, junit Implemented completely with application bytecode instrumentationICSE 2014@ jon bellJune 5, 2014

VMVM: Unit Test Virtualization Isolates in-memory side effects, just like restartingJVM Integrates easily with ant, maven, junit Implemented completely with application bytecode instrumentation No changes to JVM, no access to source coderequiredICSE 2014@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeICSE 2014@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeFirst new instance orstatic reference of TICSE 2014@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeFirst new instance orstatic reference of TAcquire lock on TICSE 2014@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeFirst new instance orstatic reference of TAcquire lock on TCheck initializationstatusICSE 2014@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeFirst new instance orstatic reference of TAcquire lock on TNot initializedRelease lock on TCheck initializationstatusICSE 2014@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeFirst new instance orstatic reference of TAcquire lock on TNot initializedRelease lock on TInitialize T’s superclassesCheck initializationstatusICSE 2014@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeFirst new instance orstatic reference of TAcquire lock on TCheck initializationstatusICSE 2014Not initializedRelease lock on TInitialize T’s superclassesRun initializer for T@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeFirst new instance orstatic reference of TAcquire lock on TAcquire lock on TCheck initializationstatusICSE 2014Not initializedRelease lock on TInitialize T’s superclassesRun initializer for T@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeRelease lock on TAcquire lock on TInitialize T’s superclassesMark init doneAcquire lock on TCheck initializationstatusICSE 2014Not initializedFirst new instance orstatic reference of TRun initializer for T@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeRelease lock on TAcquire lock on TInitialize T’s superclassesMark init doneRun initializer for TRelease lock on TAcquire lock on TCheck initializationstatusICSE 2014Not initializedFirst new instance orstatic reference of T@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeRelease lock on TAcquire lock on TInitialize T’s superclassesMark init doneRun initializer for TRelease lock on TAcquire lock on TCheck initializationstatusICSE 2014Not initializedFirstFirstnewnewinstanceinstanceor staticorstatic referenceTreferenceof T peroftest@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeRelease lock on TAcquire lock on TRe-initializeT’sInitializeT’s supersuperclassesclassesMark init doneRun initializer for TRelease lock on TAcquire lock on TCheck initializationstatusICSE 2014Not initializedFirstFirstnewnewinstanceinstanceor staticorstatic referenceTreferenceof T peroftest@ jon bellJune 5, 2014

Efficient ReinitializationEmulate exactly what happens when a class is initialized the first timeRelease lock on TAcquire lock on TRe-initializeT’sInitializeT’s supersuperclassesclassesMark init doneRe-initializeT TRuninitializer forRelease lock on TAcquire lock on TCheck initializationstatusICSE 2014Not initializedFirstFirstnewnewinstanceinstanceor staticorstatic referenceTreferenceof T peroftest@ jon bellJune 5, 2014

Efficient Reinitialization Does not require any modifications to the JVM andruns on commodity JVMsICSE 2014@ jon bellJune 5, 2014

Efficient Reinitialization Does not require any modifications to the JVM andruns on commodity JVMs The JVM calls a special method, clinit to initialize aclassICSE 2014@ jon bellJune 5, 2014

Efficient Reinitialization Does not require any modifications to the JVM andruns on commodity JVMs The JVM calls a special method, clinit to initialize aclass We do the same, entirely in JavaICSE 2014@ jon bellJune 5, 2014

Efficient Reinitialization Does not require any modifications to the JVM andruns on commodity JVMs The JVM calls a special method, clinit to initialize aclass We do the same, entirely in Java Add guards to trigger this processICSE 2014@ jon bellJune 5, 2014

Efficient Reinitialization Does not require any modifications to the JVM andruns on commodity JVMs The JVM calls a special method, clinit to initialize aclass We do the same, entirely in Java Add guards to trigger this process Register a hook with test runner to tell us when a newtest startsICSE 2014@ jon bellJune 5, 2014

Experiments RQ1: How does VMVM compare to Test SuiteMinimization?ICSE 2014@ jon bellJune 5, 2014

Experiments RQ1: How does VMVM compare to Test SuiteMinimization? RQ2: What are the performance gains of VMVM?ICSE 2014@ jon bellJune 5, 2014

Experiments RQ1: How does VMVM compare to Test SuiteMinimization? RQ2: What are the performance gains of VMVM? RQ3: Does VMVM impact fault finding ability?ICSE 2014@ jon bellJune 5, 2014

RQ1: VMVM vs Test Minimization Study design follows Zhang [ISSRE ‘11]’sevaluation of four minimization approachesICSE 2014@ jon bellJune 5, 2014

RQ1: VMVM vs Test Minimization Study design follows Zhang [ISSRE ‘11]’sevaluation of four minimization approaches Compare to the minimization technique with leastimpact on fault finding ability, Harrold [TOSEM‘93]'s techniqueICSE 2014@ jon bellJune 5, 2014

RQ1: VMVM vs Test Minimization Study design follows Zhang [ISSRE ‘11]’sevaluation of four minimization approaches Compare to the minimization technique with leastimpact on fault finding ability, Harrold [TOSEM‘93]'s technique Study performed on the popular SoftwareInfrastructure Repository datasetICSE 2014@ jon bellJune 5, 2014

AntvAn 1!tvAn 2!tvAn 3!tvAn 4!tvAn 5!tvAn 6!tvAn 7!JM tet v8!JM eret v1!JM eret v2!JM eret v3!JM eret v4!ejto r vpa 5!jto s vpa 1!jto s vpa 2!xm sl-s v3xm ec !l-s v1xm ec !l-s v2ec !v3!Reduction in Testing Time!RQ1: VMVM vs Test Minimizations90%! er irga80%!LICSE 2014betterTest Suite Minimization!VMVM!@ jon ation!June 5, 2014

AntvAn 1!tvAn 2!tvAn 3!tvAn 4!tvAn 5!tvAn 6!tvAn 7!JM tet v8!JM eret v1!JM eret v2!JM eret v3!JM eret v4!ejto r vpa 5!jto s vpa 1!jto s vpa 2!xm sl-s v3xm ec !l-s v1xm ec !l-s v2ec !v3!Reduction in Testing Time!RQ1: VMVM vs Test Minimizations90%! er irga80%!LICSE 2014betterTest Suite Minimization!VMVM!@ jon lication!June 5, 2014

AntvAn 1!tvAn 2!tvAn 3!tvAn 4!tvAn 5!tvAn 6!tvAn 7!JM tet v8!JM eret v1!JM eret v2!JM eret v3!JM eret v4!ejto r vpa 5!jto s vpa 1!jto s vpa 2!xm sl-s v3xm ec !l-s v1xm ec !l-s v2ec !v3!Reduction in Testing Time!RQ1: VMVM vs Test Minimizations90%! er irga80%!LICSE 2014betterTest Suite Minimization!VMVM!@ jon Application!June 5, 2014

AntvAn 1!tvAn 2!tvAn 3!tvAn 4!tvAn 5!tvAn 6!tvAn 7!JM tet v8!JM eret v1!JM eret v2!JM eret v3!JM eret v4!ejto r vpa 5!jto s vpa 1!jto s vpa 2!xm sl-s v3xm ec !l-s v1xm ec !l-s v2ec !v3!Reduction in Testing Time!RQ1: VMVM vs Test Minimizations90%! er irga80%!LICSE 2014betterTest Suite Minimization!VMVM!@ jon 0%!Application!June 5, 2014

RQ2: Broader Evaluation Previous study: well-studied suite of 4 projects,which average 37,000 LoC and 51 test classesICSE 2014@ jon bellJune 5, 2014

RQ2: Broader Evaluation Previous study: well-studied suite of 4 projects,which average 37,000 LoC and 51 test classes This study: manually collected repository of 20projects, average 475,000 LoC and 56 test classesICSE 2014@ jon bellJune 5, 2014

RQ2: Broader Evaluation Previous study: well-studied suite of 4 projects,which average 37,000 LoC and 51 test classes This study: manually collected repository of 20projects, average 475,000 LoC and 56 test classes ICSE 2014Range from 5,000 LoC - 5,692,450 LoC; 3 - 292test classes; 3.5-15 years in age@ jon bellJune 5, 2014

RQ2: Broader EvaluationBristlecone!Apache Nutch!Apache Tomcat!Jetty!Commons IO!Apache River!btrace!gedcom4j!mkgmap!Apache Ivy!betterFORM!Closure Compiler!Commons Codec!Commons Validator!JAXX!FreeRapid Downloader!Trove for Java!Openfire!JTor!upm!0%!ICSE 201420%!40%!60%!Relative Speedup!Larger is better@ jon bell80%!100%!June 5, 2014

RQ2: Broader EvaluationBristlecone!Apache Nutch!Apache Tomcat!Jetty!Commons IO!Apache River!btrace!gedcom4j!mkgmap!Apache Ivy!betterFORM!Closure Compiler!Commons Codec!Commons Validator!JAXX!FreeRapid Downloader!Trove for Java!Openfire!JTor!upm!Average: 62%0%!ICSE 201420%!40%!60%!Relative Speedup!Larger is better@ jon bell80%!100%!June 5, 2014

RQ2: Broader EvaluationBristlecone!Apache Nutch!Apache Tomcat!Jetty!Commons IO!Apache River!btrace!gedcom4j!mkgmap!Apache Ivy!betterFORM!Closure Compiler!Commons Codec!Commons Validator!JAXX!FreeRapid Downloader!Trove for Java!Openfire!JTor!upm!Average: 62%Max: 97%0%!ICSE 201420%!40%!60%!Relative Speedup!Larger is better@ jon bell80%!100%!June 5, 2014

Factors that impactreduction Looked for relationships between number of tests,lines of code, age of project, total testing time, timeper test, and VMVM’s speedupICSE 2014@ jon bellJune 5, 2014

Factors that impactreduction Looked for relationships between number of tests,lines of code, age of project, total testing time, timeper test, and VMVM’s speedup Result: Only average time per test is correlated withVMVM’s speedup (in fact, quite strongly; p 0.0001)ICSE 2014@ jon bellJune 5, 2014

RQ3: Impact on Fault Finding No impact on fault finding from seeded faults (SIR)ICSE 2014@ jon bellJune 5, 2014

RQ3: Impact on Fault Finding No impact on fault finding from seeded faults (SIR) Does VMVM correctly isolate tests though?ICSE 2014@ jon bellJune 5, 2014

RQ3: Impact on Fault Finding No impact on fault finding from seeded faults (SIR) Does VMVM correctly isolate tests though? Compared false positives and negatives between unisolated execution, traditionally isolated execution,and VMVM-isolated execution for these 20 complexapplicationsICSE 2014@ jon bellJune 5, 2014

RQ3: Impact on Fault Finding No impact on fault finding from seeded faults (SIR) Does VMVM correctly isolate tests though? Compared false positives and negatives between unisolated execution, traditionally isolated execution,and VMVM-isolated execution for these 20 complexapplications Result: False positives occur when not isolated.VMVM shows no false positives or false negatives.ICSE 2014@ jon bellJune 5, 2014

Conclusions Most large applications isolate their test casesICSE 2014@ jon bellJune 5, 2014

Conclusions Most large applications isolate their test cases VMVM provides up to a 97% reduction in testingtime through more efficient isolation (average 62%)ICSE 2014@ jon bellJune 5, 2014

Conclusions Most large applications isolate their test cases VMVM provides up to a 97% reduction in testingtime through more efficient isolation (average 62%) VMVM does not risk a reduction in fault findingICSE 2014@ jon bellJune 5, 2014

rFokmeonubthGiUnit Test Virtualizationwith VMVMJonathan Bell and Gail KaiserColumbia ab/vmvmSee a demo of VMVM at 2:30 today! Room MR G1-3ICSE 2014@ jon bellJune 5, 2014

ICSE 2014 @_jon_bell_ June 5, 2014 Good news: We have tests! No judgement on whether they are complete or not, but we sure have a lot of them Number of tests Apache Tomcat 1,734 . rites Reads. ICSE 2014 @_jon_bell_ June 5, 2014 Isolating Side Effects Class%A Static# Fields Class%B Static# Fields Class%C Static# Fields Test 1 Test 2

Related Documents:

Parallam PSL 10–11 Snow Roof Load Tables TimberStrand LSL 12–13 Microllam LVL 14–15 Parallam PSL 16–17 Non-Snow Roof Load Tables TimberStrand LSL 18–19 Microllam LVL 20–21 Parallam PSL 22–23 Beam Details 24 Window and Door Header Details 24–25 Nailing on Narrow

In this section, we give an overview of virtualization and describe virtio, the virtualization standard for I/O devices. In addition, we discuss the state-of-the-art for network I/O virtualization. 2.1 Overview of Virtualization and virtio The virtualization technology is generally classi ed into full-virtualization and paravirtualization.

This guide also explains the advantages of virtualization and dispels some common myths that exist regarding virtualization. 1.1. Who should read this guide? This guide is designed for anyone wishing to understand the basics of virtualization, but may be of particular interest to: Those who are new to virtualization.

TU Dresden, 2009-12-01 MOS - Virtualization Slide 6 von 58 Virtualization – a hype A lot of interest in the research community within the last years, e.g.: SOSP 03: Xen and the Art of Virtualization EuroSys 07: a whole session on virtualization Many virtualization products: VMware, QEmu, VirtualBox, KVM

Lots of features (Contd.) Domain Isolation: VCPU and Host Interrupt Affinity Spatial and Temporal Memory Isolation Device Virtualization: Pass-through device support Block device virtualization Network device virtualization Input device virtualization Display device virtualization VirtIO v0.9.5 for Para-virtualization

physical entities, and categorizes virtualization on two levels: resource (or infrastructure) virtualization and service (or application) virtualization. In resource virtualization, physical resources such as network, compute, and storage resources are segmented or pooled as logical resources. An example of resource virtualization: Sharing a load

long-term peace of mind. As the manufacturer of Parallam . PSL is treated with either CCA-C or copper azole. This warranty is good from the date of purchase for a period of 30 years thereafter on any PSL treated by an approved treater under, and in conformance with AWPA

Parallam Plus PSL (CA-C) 1. Identification . TRADE NAME(S): Parallam Plus PSL (CA-C) SYNONYMS and/or GRADES: Copper-Azole Treated Parallel Strand Lumber, Copper-Azole Treated Wood, Copper -Azole treated Structural Composite Lumber