пятница, 27 ноября 2009 г.

Boxing is an enemy of concurrency

Пост Дуга Ли о вреде boxing'а:
http://mail.openjdk.java.net/pipermail/closures-dev/2009-November/000342.html

Последний абзац:
I really,
really don't want to do is release an overhyped
facility for parallel programming that doesn't
actually speed up anyone's applications.
... про STM что-ли :)

четверг, 26 ноября 2009 г.

Докладываю на Coffee’n'Code #3

Докладываю на Coffee’n'Code #3 - «Многопоточность в Java».

Java SE 6 Performance White Paper

Java SE 6 Performance White Paper.

Особенно обратите внимание на
2.1.1 Biased Locking
2.1.2 Lock Coarsening
2.1.3 Adaptive Spinning

For more on Biased Locking, please refer to the ACM OOPSLA 2006 paper by Kenneth Russell and David Detlefs: "Eliminating Synchronization-Related Atomic Operations with Biased Locking and Bulk Rebiasing".

вторник, 24 ноября 2009 г.

Java Core

По моим представлениям Java Core состоит из:
1) синтаксис
2) java.lang.*, java.util.*, java.io.*
3) работа с исключениями
4) Java Collection Framework
5) начальные знания по многопоточности

Для детального изучения я рекомендую:
а) "Effective Java (2nd Edition)" by Joshua Bloch
б) "Java Puzzlers: Traps, Pitfalls, and Corner Cases" by Joshua Bloch and Neal Gafter
в) "Java Generics and Collections"
г) "Java I/O"
д) по многопоточке я ранее публиковал, там было пару вводных книг (Java Thread Programming или Java Threads)

P.S. Обновилось concurrentlib.livejournal.com.

Sun Certification: SCJP

В Java главными и, пожалуй, единственными признаваемыми Серьезными Конторами сертификатами являются сертификаты от Sun.
Третий уровень: SCEA
Второй уровень: SCJD, SCWCD, SCBCD, SCDJWS, SCMAD
Первый уровень: SCJP

Экзамены следующего уровня можно сдавать только сдав хотя бы один из экзаменов предидущего уровня.

Сама подготовка к SCJP позволяет не просто узнать действительно много нового из java core, но и досконально это самое коре изучить.

Для подготовки к сдаче SCJP рекомендую:
1) кроме чтения специальной литературы по подготовке именно к SCJP;
2) отличная статья Дениса Жданова на rsdn.ru "Подготовка к Sun Certified Java Programmer(SCJP) exam";
3) JavaRanch Rule Round-up Game;
4) The new and improved JavaRanch Rules Round-up Game;
5) SCJP 1.6 Mock Exam Practice Questions.

P.S. По моим личным впечатлением ничего сложнее SCJP по Core Java я не встречал (ни в других тестах, ни на собеседованиях), в Украине сдают в Киеве, вроди есть в Харькове (в ХИРЭ). Стоит порядка 1500-2000гр. При поступлении на работу стоит обговорить с работодателем возможность оплаты экзаменов (многие конторы имеют такую опцию).

понедельник, 23 ноября 2009 г.

PJP: Parallel/Concurrent GC

Небольшое замечание по сложившейся терминологии для описания типа GC.
Parallel - значит представляет собой несколько ПАРАЛЛЕЛЬНЫХ потоков. Т.е. сам уборщик мусора состоит из нескольких потоков, которые все вместе лопатят кучу.
Concurrent - значит работает ОДНОВРЕМЕННО с потоками пользователя. Т.е. не требуется делать паузу всей системы(stop-the-world).

Как видно, понятия совершенно независимые. Т.е. каждая конкретная реализация уборщика может обладать этими свойствами независимо.

Некоторые заметки о прохождении интервью при устройстве на работу в Праге

Некоторые заметки о прохождении интервью при устройстве на работу в Праге.
"... Устраивался я на должность Ведущего Разработчика J2EE."
"Сениор — 50000-80000крон (1800-3000евро), Архитект или Тим Лидер около 85000крон (3200евро)."
"1.Чем отличается абстрактный класс от интерфейса? (Да, такие вопросы тоже задают)
2.Для чего в классе Object есть метод hashCode() и как он связан с методом equals()?
3.Вы строите кэш. Вам нужно удалять из кэша некоторые объекты при каждой сборке мусора. Как это сделать?

PJP: Доктор, холодеют ноги ...

Возможно проектировать системы, которые отходят в мир иной по частям. В таком случае связи между подсистемами должны осуществляться не на основе обычных ссылок, а на основе java.lang.ref.Reference, точнее ее наследников
- java.lang.ref.SoftReference
- java.lang.ref.WeakReference
- java.lang.ref.PhantomReference
из пакета java.lang.ref.
Все это добро в момент перехода к загробной жизни помещается в ReferenceQueue.

PJP: Garbage Collector (GC)

После смерти Одиссей, как один из величайших людей, прежде чем выпить воды из Реки Забвения и забыть все воспоминания (кануть в Лету) для возвращения на Землю в новом обличии имел право выбрать кем ему быть в следующей жизни ...

Река Забвения (Лета) в Java зовется Garbage Collector. Она стирает все прежние предназначение участков ОЗУ и обновленными возвращает их к жизни.

воскресенье, 22 ноября 2009 г.

PJP: Сложные Системы и архетип Смерти

Профессионально написанная система не только хорошо работает в стандартных режимах, но также корректно переносит всякого рода переходные режимы:
- пуск
- останов
- пауза
- истощение ресурсов
- backup
- пуск после сбоя

Фактически, профессионализм высокого уровня заключается в одновременном рассмотрении проектируемых/реалируемых систем с различных сторон. Жизненный цикл - одна из таких сторон.

Далее вас ожидает несколько постов посвященных таинству Смерти в Java.

The Tale of Java Performance

The Tale of Java Performance
Abstract
The Java platform introduced Virtual Machines, JIT Compilers and Garbage Collectors to the masses and to mainstream software development. Demand and competition drove impressive improvements in the performance of Java implementations, and while the state of the art can be learned from JVM research papers and product benchmarks, we offer a “Making Of” exposing the challenges, tensions and strategies behind this history, extrapolating to similar platforms such as Microsoft .NET’s CLR.

суббота, 21 ноября 2009 г.

JPA Performance, Don't Ignore the Database

JPA Performance, Don't Ignore the Database

Locking and Concurrency in Java Persistence 2.0

Locking and Concurrency in Java Persistence 2.0

При разработке J2EE приложения встает необходимость работы с Базой.
Типичный "путь" данных: SomeMiddleware(Spring,EJBContainer(WebSphere,WebLogic))<->SomeORMFramework(Hibernate,TopLink,OpenJPA,EclipseLink)<->JDBCDriver<->TCP/IP<->RDBMS(Oracle,DB2,PostgresQL,MySql).

An Interview with Dr. Jay Hoeflinger about Automatic Parallelization

An Interview with Dr. Jay Hoeflinger about Automatic Parallelization.

Карантин окончен.

В связи с окончание карантина, семинары продолжаются в прежнем режиме:
- Пн 17.00 - "Профессиональное Java программирование"
- Чн 17.00 - "Многопоточное программирование на Java"

среда, 18 ноября 2009 г.

Пучок ссылок от remark (Дмитрий Вьюков)

Собственно пучок.
Многие я уже публиковал, но повторение не помешает :).
Материал вводного характера.

СУПЕРКОМПЬЮТЕРНЫЙ КОНСОРЦИУМ УНИВЕРСИТЕТОВ РОССИИ

Создан СУПЕРКОМПЬЮТЕРНЫЙ КОНСОРЦИУМ УНИВЕРСИТЕТОВ РОССИИ.
7 октября 2009 года состоялось годичное собрание Суперкомпьютерного консорциума университетов России.

Материалы скорее обзорного характера.
Особенно поразило:

вторник, 17 ноября 2009 г.

Список литературы от к.ф.-м.н. Карпова В.Е. (МФТИ)

Список литературы от Карпова Владимира Ефимовича, к.ф.-м.н., доцента кафедры информатики Московского физико-технического института (ГУ) со страницы Аннотации лекций выбираем Карпов В.Е. Введение в распараллеливание алгоритмов и программ. Вот оттуда список литературы:
+ Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002.
+ Гергель В.П. Теория и практика параллельных вычислений // М.: ИНТУИТ.РУ «Интернет-Университет Информационных Технологий», 2007.
+ Барский. Параллельные технологии. // М.: ИНТУИТ.РУ «Интернет-Университет Информационных Технологий», 2007.
+ Топорков В.В. Модели распределенных вычислений // М.: Физматлит, 2004
+ Миллер Р., Боксер Л. Последовательные и параллельные алгоритмы.// М:. Бином, 2006.
+ Эндрюс Г. Р. Основы многопоточного, параллельного и распределенного программирования // «Вильямс», 2003.
+ Jordan H. F., Alaghband G. Fundamentals of parallel processing // Pearson Education, 2003.
+ Quinn M. J. Designing efficient algorithms for parallel computers // McGraw-Hill Book Company, 1988.
+ Selim G. Aki The Desing and Analysis of Parallel Algorithms // Prentice Hall International, Inc., 1989.
+ http://www.ida.liu.se/~chrke/courses/APP/papers.html
+ http://www.owlnet.rice.edu/~comp422/

МФТИ: Летняя школа по высокопроизводительным вычислениям

Летняя школа по высокопроизводительным вычислениям
23 – 30 августа 2009 года в МФТИ в Долгопрудном впервые состоялась межвузовская научная молодежная школа по высокопроизводительным вычислениям в прикладном численном моделировании. Программа научной школы предоставила российским студентам, аспирантам и молодым ученым уникальную возможность интенсивной стажировки и дополнительной профессиональной и научной подготовки в сфере современных HPC технологий.

Акцент школы - практика работы на вычислительных кластерах (архитектуры Intel и NVidia).

Было около 40 участников, разбитых на две группы, по принципу двух платформ: Intel, NVDIA.
Основным отличием школы было большее погружение в проблему, в которой естественным образом появляются технологии НРС. А именно, через цепочку задача - методы - алгоритмы - архитектуры - код ... показать современные технологии в работе.

Программа школы
Аннотации лекций
Презентации лекций
Методические материалы
Бизнес презентации

OpenCL. Что это такое и зачем он нужен? (если есть CUDA)

OpenCL. Что это такое и зачем он нужен? (если есть CUDA)

NVIDIA CUDA — неграфические вычисления на графических процессорах

NVIDIA CUDA — неграфические вычисления на графических процессорах

четверг, 12 ноября 2009 г.

Медведев и суперкомпьютеры.

"13 тезисов Дмитрия Медведева
...
О суперкомпьютерах
И, наконец, пятая приоритетная задача — развитие стратегических и информационных технологий. В России должен быть в полном объеме задействован потенциал суперкомпьютеров, суперкомпьютерных систем, которые объединены высокоскоростными каналами передачи данных. С их помощью уже в пятилетней перспективе станет возможным проектирование новейших самолетов и космических аппаратов, автомобилей и ядерных реакторов. Ведь сложная техника, не прошедшая суперкомпьютерного моделирования, что называется, не положенная в цифру, через несколько лет просто не будет востребована рынком. И для завоевания здесь конкурентных позиций мы обязаны настойчиво работать.
..."

среда, 11 ноября 2009 г.

Lecture: Safe Publication

About "Safe Publication" it be the best way to read in "Java Concurrency in Practice":

3.5. Safe Publication
3.5.1. Improper Publication: When Good Objects Go Bad
3.5.2. Immutable Objects and Initialization Safety
3.5.3. Safe Publication Idioms
3.5.4. Effectively Immutable Objects
3.5.5. Mutable Objects
3.5.6. Sharing Objects Safely

Monitor classification

Monitor classification - 40-pages document.
Show 5 and more different types of monitors.
First 5-10 pages has many historic information.

Abstract
One of the most natural, elegant, and efficient mechanisms for synchronization and communication, especially for systems with sharedmemory, is the monitor. Over the past twenty years many kinds of monitors have been proposed and implemented, and many modern programming languages provide some form of monitor for concurrency control. This paper presents a taxonomy of monitors that encompasses all the extant monitors and suggests others not found in the literature or in existing programming languages. It discusses the semantics and performance of the various kinds of monitors suggested by the taxonomy, and it discusses programming techniques suitable to each.

SynchronousQueue evolution

Simply interesting info:
"In Mustang (Java 6.0), the lock-based SynchronousQueue algorithm is being replaced with a new nonblocking version. Few developers use SynchronousQueue directly, but it is used as the work queue for thread pools constructed with the Executors.newCachedThreadPool() factory. Benchmark tests comparing cached thread pool performance show that the new nonblocking synchronous queue implementation offers close to three times the speed over the current implementation. And further improvements are planned for the release following Mustang, codenamed Dolphin."

Azul vega supermachine

Azul Vega™ 3 7300 and 3300 Series.
"...with up to 864 processor cores and 768 GB of memory in a flat SMP configuration."
"...are built around the Vega 3 processor, the first 54-core chip designed and optimized for Java workloads."

And only 14U, so not very big box.

вторник, 10 ноября 2009 г.

Dr. Cliff Click: Towards a Scalable Non-Blocking Coding Style

Rapporteur at JavaOne 2008 from Dr. Cliff Click from Azul Systems one of the Best in the world specialist in Super-Scalable(768 and Up cores) Non-Blocking structures for Java.
Author of high-scale-lib (free lib at SourceForge) (lib has BitVector, HashTable and (FIFO-Queue in progress now)).

Dr. Cliff Click talk how by using FSM(Finite State Machine) and atomic-CAS create scalable non-locking structures.

"Classic reader/writer lock chokes w/ >100 CPUs
• Contention on single reader-count word limits scaling"

"• Lock-Free: Each CAS makes progress
• CAS success is local progress
• CAS failure means another CAS succeeded(global progress, local starvation)"

"JDK API mistake: witness turned into a boolean
• Hence failure-for-cause can not be distinguished from spurious-failure"

"Highly scalable (proven scalable to ~1000 CPUs)"

P.S. FSM model for verification maybe interesting for you, Igor?

воскресенье, 1 ноября 2009 г.

3 недели - карантин

Господа и Дамы, в связи с тем, что часть студентов, возможно, уедет к родителям на время карантинов в харьковских ВУЗах, объявляется 3х недельный перерыв в семинарах.

На время перерыва рекомендую Вам:
- почитать литературу с concurrentlib.livejournal.com (я туда еще добавлю книг);
- самостоятельно пописать многопоточные программки (скажем, копипастом из книг).