NUMA স্থাপত্য বোঝা

Understanding Numa Architecture



কম্পিউটার ডিজাইন করা সবসময় একটি আপস। কম্পিউটারের চারটি মৌলিক উপাদান - সেন্ট্রাল প্রসেসিং ইউনিট (সিপিইউ) বা প্রসেসর, মেমরি, স্টোরেজ এবং উপাদানগুলিকে সংযুক্ত করার জন্য বোর্ড (I/O বাস সিস্টেম) - একটি মেশিন তৈরি করতে যতটা সম্ভব চতুরতার সাথে একত্রিত হয় উভয়ই সাশ্রয়ী এবং শক্তিশালী। নকশা প্রক্রিয়ায় বেশিরভাগ প্রসেসর (কো-প্রসেসর, মাল্টি-কোর সেটআপ), মেমরির ধরন এবং পরিমাণ, স্টোরেজ (ডিস্ক, ফাইল সিস্টেম), সেইসাথে মূল্য সম্পর্কে একটি অপ্টিমাইজেশন জড়িত। সম্ভাব্য ক্ষুদ্রতম স্থানে যতগুলি একক কম্পিউটিং ইউনিট রয়েছে তার মধ্যে অপারেশন বিতরণ করা এবং কম্পিউটিং নির্দেশাবলীর সমান্তরাল প্রয়োগ আরও সহজলভ্য এবং সাশ্রয়ী করা। মেমরির ক্ষেত্রে, এটি একটি পরিমাণ বা আকারের প্রশ্ন যা পৃথক কম্পিউটিং ইউনিট দ্বারা সমাধান করা যেতে পারে এবং কোন মেমরি প্রকারটি সর্বনিম্ন বিলম্বের সাথে কাজ করে। স্টোরেজ বহিরাগত মেমোরির অন্তর্গত, এবং এর কার্যকারিতা ডিস্কের ধরন, ব্যবহার করা ফাইল সিস্টেম, থ্রেডিং, ট্রান্সফার প্রোটোকল, কমিউনিকেশন ফ্যাব্রিক এবং সংযুক্ত মেমরি ডিভাইসের সংখ্যার উপর নির্ভর করে।

I/O বাসের নকশা কম্পিউটার ধমনীর প্রতিনিধিত্ব করে এবং উল্লেখযোগ্যভাবে নির্ধারণ করে যে উপরে তালিকাভুক্ত একক উপাদানগুলির মধ্যে কত এবং কত দ্রুত তথ্য বিনিময় করা যায়। উচ্চ শ্রেণীর নেতৃত্ব দেওয়া হয় হাই পারফরম্যান্স কম্পিউটিং (এইচপিসি) ক্ষেত্রে ব্যবহৃত উপাদানগুলির দ্বারা। ২০২০ সালের মাঝামাঝি পর্যন্ত, এইচপিসির সমসাময়িক প্রতিনিধিদের মধ্যে এনভিডিয়া টেসলা এবং ডিজিজএক্স, রেডিওন ইন্সটিঙ্ক্ট, এবং ইন্টেল জিওন ফি জিপিইউ-ভিত্তিক এক্সিলারেটর পণ্য (পণ্যের তুলনার জন্য [1,2 দেখুন)।







NUMA বোঝা

নন-ইউনিফর্ম মেমোরি অ্যাক্সেস (NUMA) সমসাময়িক মাল্টিপ্রসেসিং সিস্টেমে ব্যবহৃত একটি শেয়ার্ড মেমরি আর্কিটেকচার বর্ণনা করে। NUMA হল একটি কম্পিউটিং সিস্টেম যা বেশ কয়েকটি একক নোডের সমন্বয়ে গঠিত হয় যাতে সমস্ত নোডের মধ্যে সামগ্রিক মেমরি ভাগ করা হয়: প্রতিটি CPU এর নিজস্ব স্থানীয় মেমরি নির্ধারিত হয় এবং সিস্টেমের অন্যান্য CPU গুলি থেকে মেমরি অ্যাক্সেস করতে পারে [12,7]।



NUMA হল একটি চতুর সিস্টেম যা একাধিক সেন্ট্রাল প্রসেসিং ইউনিট (CPU) কে কম্পিউটারে উপলব্ধ যেকোনো পরিমাণ কম্পিউটার মেমরির সাথে সংযুক্ত করার জন্য ব্যবহৃত হয়। একক NUMA নোডগুলি একটি স্কেলেবল নেটওয়ার্ক (I/O বাস) এর সাথে সংযুক্ত থাকে যাতে একটি CPU অন্যান্য NUMA নোডের সাথে যুক্ত মেমরি সুশৃঙ্খলভাবে অ্যাক্সেস করতে পারে।



স্থানীয় মেমরি হল সেই স্মৃতি যা CPU একটি নির্দিষ্ট NUMA নোডে ব্যবহার করছে। বিদেশী বা দূরবর্তী মেমরি হল একটি স্মৃতি যা একটি CPU অন্য NUMA নোড থেকে গ্রহণ করছে। NUMA অনুপাত শব্দটি বিদেশী মেমরি অ্যাক্সেসের খরচ এবং স্থানীয় মেমরি অ্যাক্সেসের খরচের অনুপাতকে বর্ণনা করে। অনুপাত যত বেশি, ব্যয় তত বেশি, এবং এইভাবে মেমরি অ্যাক্সেস করতে বেশি সময় লাগে।





যাইহোক, যখন CPU তার নিজস্ব স্থানীয় মেমরি অ্যাক্সেস করছে তার চেয়ে বেশি সময় লাগে। স্থানীয় মেমরি অ্যাক্সেস একটি প্রধান সুবিধা, কারণ এটি উচ্চ ব্যান্ডউইথের সাথে কম বিলম্বের সংমিশ্রণ করে। বিপরীতে, অন্য যে কোন CPU- এর অন্তর্গত মেমরি অ্যাক্সেস করার ক্ষেত্রে উচ্চতর বিলম্ব এবং নিম্ন ব্যান্ডউইথ কর্মক্ষমতা রয়েছে।

পিছনে ফিরে তাকান: শেয়ার্ড-মেমরি মাল্টিপ্রসেসরের বিবর্তন

ফ্রাঙ্ক ডেনম্যান [8] বলেছেন যে আধুনিক সিস্টেম আর্কিটেকচার সত্যিকার অর্থে ইউনিফর্ম মেমোরি অ্যাক্সেস (ইউএমএ) অনুমোদন করে না, যদিও এই সিস্টেমগুলি বিশেষভাবে সেই উদ্দেশ্যে ডিজাইন করা হয়েছে। সহজভাবে বলতে গেলে, সমান্তরাল কম্পিউটিংয়ের ধারণাটি ছিল একটি প্রসেসরের একটি গোষ্ঠী যা একটি প্রদত্ত কাজ গণনা করতে সহযোগিতা করে, যার ফলে অন্যথায় শাস্ত্রীয় অনুক্রমিক গণনা দ্রুত হয়।



ফ্রাঙ্ক ডেনম্যান [8] দ্বারা ব্যাখ্যা করা হয়েছে, 1970 এর দশকের গোড়ার দিকে, রিলেশনাল ডাটাবেস সিস্টেম প্রবর্তনের সাথে সাথে একাধিক সমবয়সী ব্যবহারকারী অপারেশন এবং অতিরিক্ত ডেটা প্রজন্মের ব্যবস্থা করতে পারে এমন সিস্টেমগুলির প্রয়োজন। ইউনিপ্রসেসর পারফরম্যান্সের চিত্তাকর্ষক হার সত্ত্বেও, মাল্টিপ্রসেসর সিস্টেমগুলি এই কাজের চাপ সামলানোর জন্য আরও ভালভাবে সজ্জিত ছিল। একটি সাশ্রয়ী ব্যবস্থা প্রদানের জন্য, ভাগ করা মেমরি ঠিকানা স্থান গবেষণার কেন্দ্রবিন্দুতে পরিণত হয়। প্রথম দিকে, একটি ক্রসবার সুইচ ব্যবহারকারী সিস্টেমগুলির পক্ষে সমর্থন করা হয়েছিল, তবে এই নকশা জটিলতার সাথে প্রসেসর বৃদ্ধির সাথে স্কেল করা হয়েছিল, যা বাস-ভিত্তিক সিস্টেমকে আরও আকর্ষণীয় করে তুলেছিল। একটি বাস সিস্টেমে প্রসেসর বাসে অনুরোধ পাঠিয়ে পুরো মেমরি স্পেস অ্যাক্সেস করতে পারে, উপলব্ধ মেমরি যতটা সম্ভব অনুকূলভাবে ব্যবহার করার একটি খুব সাশ্রয়ী উপায়।

যাইহোক, বাস-ভিত্তিক কম্পিউটার সিস্টেমগুলি একটি বাধা-বিপত্তি নিয়ে আসে-সীমিত পরিমাণে ব্যান্ডউইথ যা স্কেলেবিলিটি সমস্যার দিকে পরিচালিত করে। সিস্টেমে যত বেশি সিপিইউ যোগ করা হয়, প্রতি নোডে কম ব্যান্ডউইথ পাওয়া যায়। তদুপরি, যত বেশি সিপিইউ যুক্ত করা হয়, বাসটি তত বেশি এবং ফলস্বরূপ বিলম্ব বেশি হয়।

বেশিরভাগ সিপিইউ দ্বিমাত্রিক সমতলে নির্মিত হয়েছিল। সিপিইউতেও সমন্বিত মেমরি কন্ট্রোলার যুক্ত করতে হয়েছিল। প্রতিটি সিপিইউ কোরে চারটি মেমরি বাস (উপরে, নীচে, বাম, ডান) থাকার সহজ সমাধান সম্পূর্ণ উপলব্ধ ব্যান্ডউইথ অনুমোদিত, তবে এটি কেবল এতদূর যায়। সিপিইউগুলি যথেষ্ট সময় ধরে চারটি কোর দিয়ে স্থবির হয়ে পড়ে। উপরে এবং নীচে ট্রেস যুক্ত করার ফলে সরাসরি বাসগুলি তির্যক বিরোধী সিপিইউতে যেতে পারে কারণ চিপগুলি 3D হয়ে যায়। একটি কার্ডে চার-কোর সিপিইউ স্থাপন করা, যা তখন একটি বাসের সাথে সংযুক্ত ছিল, পরবর্তী যুক্তিসংগত পদক্ষেপ।

আজ, প্রতিটি প্রসেসর একটি ভাগ অন-চিপ ক্যাশে এবং একটি অফ-চিপ মেমরির সাথে অনেকগুলি কোর ধারণ করে এবং একটি সার্ভারের মধ্যে মেমরির বিভিন্ন অংশে পরিবর্তনশীল মেমরি অ্যাক্সেস খরচ রয়েছে।

ডেটা অ্যাক্সেসের দক্ষতা উন্নত করা সমসাময়িক সিপিইউ ডিজাইনের অন্যতম প্রধান লক্ষ্য। প্রতিটি CPU কোর একটি ছোট স্তরের একটি ক্যাশে (32 KB) এবং একটি বৃহত্তর (256 KB) স্তরের 2 ক্যাশে দিয়েছিল। বিভিন্ন কোর পরবর্তীতে বেশ কয়েকটি এমবি স্তরের 3 ক্যাশে ভাগ করবে, যার আকার সময়ের সাথে উল্লেখযোগ্যভাবে বৃদ্ধি পেয়েছে।

ক্যাশে মিস এড়াতে - ক্যাশে নেই এমন ডেটার অনুরোধ করা - সঠিক সংখ্যক সিপিইউ ক্যাশে, ক্যাশিং স্ট্রাকচার এবং সংশ্লিষ্ট অ্যালগরিদম খুঁজে পেতে প্রচুর গবেষণার সময় ব্যয় করা হয়। ক্যাশিং স্ন্যুপ [4] এবং ক্যাশে সহনশীলতা [3,5] এর প্রোটোকলের আরও বিস্তারিত ব্যাখ্যার জন্য [8] দেখুন, সেইসাথে NUMA এর পিছনে নকশা ধারণাগুলি।

NUMA এর জন্য সফটওয়্যার সাপোর্ট

দুটি সফ্টওয়্যার অপ্টিমাইজেশন ব্যবস্থা আছে যা NUMA আর্কিটেকচার সমর্থনকারী একটি সিস্টেমের কর্মক্ষমতা উন্নত করতে পারে - প্রসেসর অ্যাফিনিটি এবং ডেটা বসানো। [19] -এ যেমন ব্যাখ্যা করা হয়েছে, প্রসেসর অ্যাফিনিটি […] একটি প্রক্রিয়া বা থ্রেডকে একক সিপিইউ, বা সিপিইউ -এর একটি পরিসীমা বাঁধতে এবং আনবাইন্ডিং করতে সক্ষম করে যাতে প্রক্রিয়া বা থ্রেডটি কেবলমাত্র নির্ধারিত সিপিইউ বা সিপিইউ -এর পরিবর্তে কার্যকর হয়। কোন CPU। ডেটা প্লেসমেন্ট শব্দটি সফ্টওয়্যার পরিবর্তনকে বোঝায় যেখানে কোড এবং ডেটা মেমরিতে যতটা সম্ভব বন্ধ রাখা হয়।

বিভিন্ন UNIX এবং UNIX- সম্পর্কিত অপারেটিং সিস্টেম NUMA কে নিম্নলিখিত উপায়ে সমর্থন করে (নীচের তালিকাটি [14] থেকে নেওয়া হয়েছে):

  • সিলিকন গ্রাফিক্স IRIX অরিজিন সার্ভার সিরিজ সহ 1240 CPU- র উপর ccNUMA আর্কিটেকচার সমর্থন করে।
  • মাইক্রোসফট উইন্ডোজ 7 এবং উইন্ডোজ সার্ভার 2008 R2 64 লজিক্যাল কোরের উপর NUMA আর্কিটেকচারের জন্য সমর্থন যোগ করেছে।
  • লিনাক্স কার্নেলের 2.5 সংস্করণে ইতিমধ্যে মৌলিক NUMA সমর্থন রয়েছে, যা পরবর্তী কার্নেল রিলিজগুলিতে আরও উন্নত হয়েছে। লিনাক্স কার্নেলের সংস্করণ 8.8 একটি নতুন NUMA ফাউন্ডেশন এনেছে যা পরবর্তী কার্নেল রিলিজগুলিতে আরও দক্ষ NUMA নীতির বিকাশের অনুমতি দেয় [১]]। লিনাক্স কার্নেলের সংস্করণ 13.১13 এমন অনেক নীতি নিয়ে এসেছে যার লক্ষ্য একটি প্রক্রিয়াকে তার মেমরির কাছাকাছি রাখা, একসঙ্গে কেসগুলি পরিচালনা করা, যেমন প্রসেসের মধ্যে মেমরি পেজ শেয়ার করা, অথবা স্বচ্ছ বিশাল পেজ ব্যবহার করা; নতুন সিস্টেম কন্ট্রোল সেটিংস NUMA ব্যালেন্সিংকে সক্ষম বা অক্ষম করার পাশাপাশি বিভিন্ন NUMA মেমরি ব্যালেন্সিং প্যারামিটারগুলির কনফিগারেশনের অনুমতি দেয় [15]।
  • ওরাকল এবং ওপেনসোলারিস উভয়ই NUMA আর্কিটেকচার লজিক্যাল গ্রুপ প্রবর্তনের সাথে।
  • ফ্রিবিএসডি সংস্করণ 11.0 এ প্রাথমিক NUMA অ্যাফিনিটি এবং নীতি কনফিগারেশন যুক্ত করেছে।

কম্পিউটার সায়েন্স অ্যান্ড টেকনোলজি, প্রসিডিংস অফ দ্য ইন্টারন্যাশনাল কনফারেন্স (CST2016) বইয়ে নিং কাই পরামর্শ দিয়েছেন যে NUMA আর্কিটেকচারের অধ্যয়নটি মূলত হাই-এন্ড কম্পিউটিং পরিবেশের উপর দৃষ্টি নিবদ্ধ করা হয়েছিল এবং প্রস্তাবিত NUMA- সচেতন রেডিক্স পার্টিশন (NaRP), যা কর্মক্ষমতাকে অনুকূল করে। ব্যবসা গোয়েন্দা অ্যাপ্লিকেশনগুলিকে ত্বরান্বিত করতে NUMA নোডগুলিতে ভাগ করা ক্যাশে। যেমন, NUMA কয়েকটি প্রসেসর [6] সহ ভাগ করা মেমরি (SMP) সিস্টেমের মধ্যবর্তী স্থলকে প্রতিনিধিত্ব করে।

NUMA এবং লিনাক্স

উপরে উল্লিখিত হিসাবে, লিনাক্স কার্নেল সংস্করণ 2.5 থেকে NUMA সমর্থন করেছে। ডেবিয়ান জিএনইউ/লিনাক্স এবং উবুন্টু দুইটি সফটওয়্যার প্যাকেজ numactl [16] এবং numad [17] দিয়ে প্রক্রিয়া অপ্টিমাইজেশনের জন্য NUMA সমর্থন প্রদান করে। Numactl কমান্ডের সাহায্যে, আপনি আপনার সিস্টেমে উপলব্ধ NUMA নোডের তালিকা তালিকাভুক্ত করতে পারেন [18]:

# numactl -হার্ডওয়্যার
উপলব্ধ:2নোড(0-)
নোড0cpus:0 2 3 4 5 6 7 16 17 18 19 বিশ একুশ 22 2. 3
নোড0আকার:8157এমবি
নোড0বিনামূল্যে:88এমবি
নোডcpus:8 9 10 এগারো 12 13 14 পনের 24 25 26 27 28 29 30 31
নোডআকার:8191এমবি
নোডবিনামূল্যে:5176এমবি
নোড দূরত্ব:
নোড0
0:10 বিশ
:বিশ 10

NumaTop হল একটি দরকারী টুল যা ইন্টেলের দ্বারা রানটাইম মেমোরির এলাকা পর্যবেক্ষণ এবং NUMA সিস্টেমে প্রক্রিয়া বিশ্লেষণের জন্য [10,11]। টুলটি সম্ভাব্য NUMA- সম্পর্কিত পারফরম্যান্সের বাধা চিহ্নিত করতে পারে এবং সেইজন্য NUMA সিস্টেমের সম্ভাব্যতা বৃদ্ধির জন্য মেমরি/CPU বরাদ্দগুলিকে পুনরায় ভারসাম্য করতে সাহায্য করে। আরো বিস্তারিত বিবরণের জন্য [9] দেখুন।

ব্যবহারের দৃশ্য

যে কম্পিউটারগুলি NUMA প্রযুক্তিকে সমর্থন করে তা সমস্ত CPU- কে সরাসরি সম্পূর্ণ মেমরি অ্যাক্সেস করতে দেয় - CPU গুলি একে একক, লিনিয়ার অ্যাড্রেস স্পেস হিসেবে দেখে। এটি 64-বিট অ্যাড্রেসিং স্কিমের আরও দক্ষ ব্যবহারের দিকে পরিচালিত করে, যার ফলে ডেটার দ্রুত চলাচল, ডেটার কম প্রতিলিপি এবং সহজ প্রোগ্রামিং হয়।

NUMA সিস্টেমগুলি সার্ভার-সাইড অ্যাপ্লিকেশনগুলির জন্য বেশ আকর্ষণীয়, যেমন ডেটা মাইনিং এবং ডিসিশন সাপোর্ট সিস্টেম। তদুপরি, গেমিং এবং উচ্চ-পারফরম্যান্স সফ্টওয়্যারের জন্য অ্যাপ্লিকেশন লেখা এই আর্কিটেকচারের সাথে অনেক সহজ হয়ে যায়।

উপসংহার

উপসংহারে, NUMA আর্কিটেকচার স্কেলেবিলিটিকে সম্বোধন করে, যা এর প্রধান সুবিধাগুলির মধ্যে একটি। একটি NUMA CPU- তে, একটি নোডের উচ্চতর ব্যান্ডউইথ থাকবে অথবা সেই একই নোডে মেমরি অ্যাক্সেস করার জন্য কম বিলম্ব থাকবে (যেমন, স্থানীয় CPU দূরবর্তী অ্যাক্সেসের সাথে একই সময়ে মেমরি অ্যাক্সেসের অনুরোধ করে; অগ্রাধিকার স্থানীয় CPU- এর উপর)। ডেটা নির্দিষ্ট প্রক্রিয়ায় (এবং এইভাবে প্রসেসর) স্থানীয়করণ করা হলে এটি নাটকীয়ভাবে মেমরি থ্রুপুট উন্নত করবে। অসুবিধা হ'ল এক প্রসেসর থেকে অন্য প্রসেসরে ডেটা স্থানান্তরের উচ্চ ব্যয়। যতক্ষণ না এই কেসটি প্রায়শই ঘটে না, ততক্ষণ একটি NUMA সিস্টেম আরও traditionalতিহ্যবাহী স্থাপত্যের সাথে সিস্টেমগুলিকে ছাড়িয়ে যাবে।

লিঙ্ক এবং রেফারেন্স

  1. তুলনা করুন NVIDIA Tesla বনাম Radeon Instinct, https://www.itcentralstation.com/products/comparisons/nvidia-tesla_vs_radeon-instinct
  2. তুলনা করুন NVIDIA DGX-1 বনাম Radeon Instinct, https://www.itcentralstation.com/products/comparisons/nvidia-dgx-1_vs_radeon-instinct
  3. ক্যাশে সমন্বয়, উইকিপিডিয়া, https://en.wikipedia.org/wiki/Cache_coherence
  4. বাস ছিনতাই, উইকিপিডিয়া, https://en.wikipedia.org/wiki/Bus_snooping
  5. মাল্টিপ্রসেসর সিস্টেমে ক্যাশে সমন্বয় প্রোটোকল, গিক্সের জন্য গিক্স, https://www.geeksforgeeks.org/cache-coherence-protocols-in-multiprocessor-system /
  6. কম্পিউটার সায়েন্স অ্যান্ড টেকনোলজি - প্রসিডিংস অব দ্য ইন্টারন্যাশনাল কনফারেন্স (CST2016), নিং কাই (এড।), ওয়ার্ল্ড সায়েন্টিফিক পাবলিশিং কো Pte লিমিটেড, ISBN: 9789813146419
  7. ড্যানিয়েল পি। https://www.oreilly.com/library/view/understanding-the-linux/0596005652/
  8. ফ্রাঙ্ক ডেনম্যান: NUMA ডিপ ডাইভ পার্ট 1: UMA থেকে NUMA পর্যন্ত, https://frankdenneman.nl/2016/07/07/numa-deep-dive-part-1-uma-numa/
  9. কলিন ইয়ান কিং: নুমটপ: একটি NUMA সিস্টেম মনিটরিং টুল, http://smackerelofopinion.blogspot.com/2015/09/numatop-numa-system-monitoring-tool.html
  10. নিউমাটপ, https://github.com/intel/numatop
  11. Package numatop for Debian GNU/Linux, https://packages.debian.org/buster/numatop
  12. জোনাথন কেহাইয়াস: নন-ইউনিফর্ম মেমরি অ্যাক্সেস/আর্কিটেকচার (NUMA) বোঝা, https://www.sqlskills.com/blogs/jonathan/understanding-non-uniform-memory-accessarchitectures-numa/
  13. কার্নেল 3.8 এর জন্য লিনাক্স কার্নেল নিউজ, https://kernelnewbies.org/Linux_3.8
  14. অ-অভিন্ন মেমরি অ্যাক্সেস (NUMA), উইকিপিডিয়া, https://en.wikipedia.org/wiki/Non-uniform_memory_access
  15. লিনাক্স মেমরি ম্যানেজমেন্ট ডকুমেন্টেশন, NUMA, https://www.kernel.org/doc/html/latest/vm/numa.html
  16. ডেবিয়ান জিএনইউ/লিনাক্সের জন্য প্যাকেজ নিউম্যাক্টল, https://packages.debian.org/sid/admin/numactl
  17. ডেবিয়ান জিএনইউ/লিনাক্সের জন্য প্যাকেজ নুমাদ, https://packages.debian.org/buster/numad
  18. NUMA কনফিগারেশন সক্রিয় বা নিষ্ক্রিয় কিনা তা কীভাবে খুঁজে পাওয়া যায়? https://www.thegeekdiary.com/centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled/
  19. প্রসেসরের অনুরাগ, উইকিপিডিয়া, https://en.wikipedia.org/wiki/Processor_affinity

ধন্যবাদ

এই নিবন্ধটি প্রস্তুত করার সময় লেখকরা তার সহায়তার জন্য জেরোল্ড রুপ্রেচটকে ধন্যবাদ জানাতে চান।

লেখক সম্পর্কে

Plaxedes Nehanda একটি বহুমুখী, স্ব-চালিত বহুমুখী ব্যক্তি যিনি অনেক টুপি পরেন, তাদের মধ্যে একজন ইভেন্ট প্ল্যানার, ভার্চুয়াল অ্যাসিস্ট্যান্ট, ট্রান্সক্রাইবার, সেইসাথে একজন আগ্রহী গবেষক, দক্ষিণ আফ্রিকার জোহানেসবার্গে অবস্থিত।

প্রিন্স কে।

ফ্রাঙ্ক হফম্যান রাস্তায় কাজ করেন-বিশেষত বার্লিন (জার্মানি), জেনেভা (সুইজারল্যান্ড), এবং কেপ টাউন (দক্ষিণ আফ্রিকা)-লিনাক্স-ইউজার এবং লিনাক্স ম্যাগাজিনের মতো ম্যাগাজিনের ডেভেলপার, প্রশিক্ষক এবং লেখক হিসাবে। তিনি ডেবিয়ান প্যাকেজ ম্যানেজমেন্ট বইয়ের সহ-লেখক ( http://www.dpmb.org )।