Thursday, December 2, 2010

Scalability -- סקאלאביליות


במודעות הדרושים בחודשים האחרונים יש באזז חדש "סקאלאביליות" -- רוצים מפתחים שמנוסים בפיתוח מערכות סקאלאביליות, רוצים מפתחי אלגוריתמים בעלי מודעות ונסיון בסקאלאביליות, רוצים ארכיטקטים שמומחים לסקאלאביליות וכמובן גם צריכים אנשי IT שמלאכתם היא בסקאלאביליות.


אז מה אומר המושג? זאת בעצם תכונה שאנו רוצים שתהיה למערכת שלנו. תכונת הסקאלאביליות היא היכולת לגדול באופן משמעותי במספר הצרכנים במערכת מבלי לפגוע במהירות התגובה של המערכת, מבלי לפגוע באיכות התגובה של המערכת וכל גידול בצריכת המשאבים כתוצאה מכך צריך להיות בקצב איטי ובסדר גודל קטן יותר מקצב הגידול ומסדר הגודל של הריבוי בצרכנים.


למשל, אתר שמתנהג באופן סקאלאבילי הוא אתר שגם ברגעים של שיא עומס מבחינת כמות הצפיות ליחידת זמן עדיין נותן שרות טוב ומהיר (ז"א, עדיין חי ומגיב, עדיין מחזיר את התוכן באיכות טובה ועדיין עושה זאת במהירות) גם אם השיא הזה הופך להיות תדיר יותר וגם אם ככל שהזמן עובר השיא הקודם הופך להיות הנורמה החדשה והשיא הבא הוא מסדר גודל גבוה יותר.


עניינים חשובים בסקאלאביליות הם:

* לשמור שהמערכת תשאר חיה ועובדת

* לשמור את המערכת מגיבה

* לשמור את המערכת מגיבה בזמן סביר מהיר וטוב

* לשמור שהמערכת נותנת תוצאת באיכות

* לשמור שהמערכת לא מבזבזת (יותר מידי) משאבים כשהעומס קטן


וכל זאת גם ברגעי עומס וגם כשמספר הצרכים הולך וגדל וגם בתקופות שקטות.


החוכמה, בקיצור היא לדעת לגדול לפי הצורך, לגדול בחוכמה, לצפות תקלות, בעיות ועומסים ולהתכונן בהתאם לאסונות ולבעיות -- לדעת לנתב עומסים, לאזן עומסים, ולדעת לנצל משאבים ביעילות.


הרעיונות הללו אינם חדשים אבל באחרונה עם הבאזזים של מחשוב מעונן (cloud computing) ושל וירטואליזציה (virtualization) מרגישות חברות רבות ומרגישים ארגונים רבים שגם אם הם לא התכוונו הם מוצאים את עצמם נדחפים עם העדר בכיוון הזה. ולכן, כנראה זה פתאום חשוב מאוד לכול.


מידע מועיל בעברית על סקאלאביליות של תשתיות מחשוב ורשת של חברה שנותנת שירותים באינטרנט אפשר למצוא וללמוד ממנו בפודקאסט מספר 83 של רברס עם פלטפורמה (reversim.com). בפודקאסט מספר אורי להב, מייסד-שותף באאוטבריין וה-CTO של אאוטבריין, על מערכות ה-Operations ב-אאוטבריין ואיך הן מתוכננות לסקאלאביליות. יש עוד מספר פודקאסטים של רברסים שעוסקים בנושא: פודקאסט מספר 47 (Scalability למתחילים), פודקאסט מספר 17 (Key Value Databases), פודקאסט מספר 13 (Scalability עם ניר יפת).


מידע מועיל על סקאלאביליות בבנייה של צוותי פיתוח ושל מוצר (מועיל למנהלי פיתוח ולסטארטאפיסטים) אפשר לקרוא בפוסט המעניין של משה קפלן, איך לבנות מערכת מחשוב ענן ולחזור הביתה בשלום, ביומן הרשת המחכים שלו, הבלוג הפתוח למנהל הפיתוח.


כמה נושאים שלא מזיק לקרוא עליהם, להכיר בקיומן ולדעת מה הם עושים (שווה יותר להבין כיצד הם עובדים וכיצד להשתמש בהם):

* ועוד ועוד ועוד

יש לכם קישורים מעניינים ומועילים על סקאלאביליות? שלחו אליי וארכז אותן בפוסט.



Wednesday, December 1, 2010

קישורים לסיכומים ולמצגות בנושאים של מבני נתונים


מצאתי עמוד שמקשר לחומר רב מסיכומים, מצגות והדגמות של מבני נתונים רבים. החומרים נאספו מאוניברסיטאות ומהטכניון בארץ ובעולם. יש גם כמה קישורים לויקיפדיה. קישורים לבחינות מועילים מאוד לדעתי למי שמעוניין לתרגל את החומר כדי להתרשם האם אכן הבין את אשר קרא. קריאה טובה לממפתחים שבינינו -- לא יזיק לרענן את החומר ולהזכר ואולי אפילו להבין מחדש (ואולי בפעם הראשונה?) את הנושאים -- זה בוודאי לא יזיק וכנראה יעשה רק טוב לאיכות העבודה.


הקישור לאוסף החומר במבני נתונים: http://www.dsdb.co.nr/


התאמת אלגוריתם חיפוש לרוחב בארכיטקטורה של מעברים מרובי ליבה




בפרסומי הכנס, סופר-קומפיוטינג 10 (מחשוב על), SC '10 Proceedings of the 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis , שהתקיים השנה בניו אורלינס שבלואיזיאנה, בארה"ב, מצאתי נושא נוסף שסקרן אותי והוא יישום מקבילי ומבוזר של אחד האלגוריתמים הידועים והשימושיים בגרפים, אלגוריתם BFS. במאמרם החוקרים מציגים את הבעייתיות בחקירה של גרפים עצומיי מימדים ובודקים את השימוש של אלגוריתם חיפוש לרוחב (BFS) וניצול יעיל שלו עבור מעבדים מרובי ליבה מתקדמים. החוקרים מציגים שלוש גרסאות של אלגוריתם BFS לקונפיגורציה של ארכיטקטורה של מעבדים מרובי ליבה.
הנה התקציר של המאמר:

Scalable Graph Exploration on Multicore Processors
Authors: Virat Agarwal * Fabrizio Petrini * Davide Pasetto * David A. Bader



Abstract

Many important problems in computational sciences, social network analysis, security, and business analytics, are data-intensive and lend themselves to graph-theoretical analyses. In this paper we investigate the challenges involved in exploring very large graphs by designing a breadth-first search (BFS) algorithm for advanced multi-core processors that are likely to become the building blocks of future exascale systems. Our new methodology for large-scale graph analytics combines a highlevel algorithmic design that captures the machine-independent aspects, to guarantee portability with performance to future processors, with an implementation that embeds processorspecific optimizations. We present an experimental study that uses state-of-the-art Intel Nehalem EP and EX processors and up to 64 threads in a single system. Our performance on several benchmark problems representative of the power-law graphs found in real-world problems reaches processing rates that are competitive with supercomputing results in the recent literature. In the experimental evaluation we prove that our graph exploration algorithm running on a 4-socket Nehalem EX is (1) 2.4 times faster than a Cray XMT with 128 processors when exploring a random graph with 64 million vertices and 512 millions edges, (2) capable of processing 550 million edges per second with an R-MAT graph with 200 million vertices and 1 billion edges, comparable to the performance of a similar graph on a Cray MTA-2 with 40 processors and (3) 5 times faster than 256 BlueGene/L processors on a graph with average degree 50.











התמרת גאוס מהירה ומקבילית

בפרסומי הכנס, סופר-קומפיוטינג 10 (מחשוב על), SC '10 Proceedings of the 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis , שהתקיים השנה בניו אורלינס שבלואיזיאנה, בארה"ב, לכד את עיניי פרסום על התמרת גאוס מהירה ומקבילית. החוקרים מציגים אלגוריתם מקבילי לחישוב הסכום של N גאוסיאנים ב-N נקודות. בעוד שחישוב סדור של סכום זה דורש סיבוכיות זמן מסדר גודל ריבועי ב-N, האלגוריתם שהחוקרים מציגים דורש סיבוכיות זמן מקבילית שמוערכת בסדר גודל של- N/Np להתפלגות נקודות אחידה ולסיבוכיות זמן מקבילית שמוערכת בסדר גודל של N/np log N/np + nplognp עבור התפלגות נקודות שאינה אחידה. הקבוע Np מייצג את מספר המעבדים שבשימוש האלגוריתם.
הנה קישור למאמר והנה התקציר של המאמר:


Parallel Fast Gauss Transform
Authors: Rahul S. Sampath * Hari Sundar * Shravan K. Veerapaneni

Abstract
We present fast adaptive parallel algorithms to compute the sum of N Gaussians at N points. Direct sequential computation of this sum would take $O(N^2)$ time. The parallel time complexity estimates for our algorithms are $O(N/np)$ for uniform point distributions and $O(N/np log N/np + nplognp)$ for nonuniform distributions using np CPUs. We incorporate a planewave representation of the Gaussian kernel which permits “diagonal translation”. We use parallel octrees and a new scheme for translating the plane-waves to efficiently handle nonuniform distributions. Computing the transform to six-digit accuracy at 120 billion points took approximately 140 seconds using 4096 cores on the Jaguar supercomputer at the Oak Ridge National Laboratory. Our implementation is kernel-independent and can handle other “Gaussian-type” kernels even when an explicit analytic expression for the kernel is not known. These algorithms form a new class of core computational machinery for solving parabolic PDEs on massively parallel architectures.

תמונות שאמי צילמה בטיול להרודיון

אמי, רבקה יונה, השתתפה אתמול בטיול להרודיון. היא נהנתה מפריחת החלמוניות וצילמה כמה מהפרחים.